error Ваш файл блокировки необходимо обновить, но пряжа была запущена с помощью `--frozen-lockfile`

У меня проблема с одной зависимостью в моем файле yarn.lock. Проблема связана с ldapjs, в последней версии есть ошибка, связанная со специальными символами в имени пользователя или пароле, поэтому я хочу зафиксировать ее в последней рабочей версии 1.0.2.

Когда я передал свой код в основную ветку, на этапе создания этого проекта началось сбойное сообщение заголовка.

Вот мой файл докеров

FROM repository/node-oracle:10.15.3

LABEL maintainer="Me"

RUN yarn cache clean

# Add Tini
ENV TINI_VERSION v0.18.0
ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini /tini
RUN chmod +x /tini
ENTRYPOINT ["/tini", "--"]

WORKDIR /usr/src/auth

COPY . .

RUN yarn install --frozen-lockfile --non-interactive --silent

ENV PATH /usr/src/auth/node_modules/.bin:$PATH

EXPOSE 3000

CMD ["node", "./bin/www"]

Любая работа о том, как я могу заставить эту работу?

Также в качестве дополнительной информации я смог запустить конвейер с этим шагом в функциональной ветке, сообщение началось в разработке и основной ветке.

[ОБНОВИТЬ]

Это зависимости, обновленные и замороженные в моем файле yarn.lock

activedirectory@^0.7.2:
  version "0.7.2"
  resolved "https://registry.yarnpkg.com/activedirectory/-/activedirectory-0.7.2.tgz#19286d10c6b24a98cc906dc638256191686fa91f"
  integrity sha1-GShtEMaySpjMkG3GOCVhkWhvqR8=
  dependencies:
    async ">= 0.1.22"
    bunyan ">= 1.3.5"
    **ldapjs "=1.0.2"**
    underscore ">= 1.4.3"

***ldapjs@1.0.2***:
  version "1.0.2"
  resolved "https://registry.yarnpkg.com/ldapjs/-/ldapjs-1.0.2.tgz#346e040a95a936e90c47edd6ede5df257dd21ee6"
  integrity sha512-XzF2BEGeM/nenYDAJvkDMYovZ07fIGalrYD+suprSqUWPCWpoa+a4vWl5g8o/En85m6NHWBpirDFNClWLAd77w==
  dependencies:
    asn1 "0.2.1"
    assert-plus "0.1.5"
    bunyan "0.22.1"
    nopt "2.1.1"
    pooling "0.4.6"
  optionalDependencies:
    dtrace-provider "0.2.8"

4 ответа

Решение

Просто обновление. После нескольких попыток я наконец смог делать то, что хотел. Удаление ^ из ldap.js и из активного каталога (который содержит библиотеку ldap.js) выполнило свою работу, как ожидалось.

Я застрял в той же ошибке, и проблема заключалась в том, что мой файл yarn.lock не устарел. Я перешел по следующей ссылке , и это решило мою проблему.

Видимо, мне просто нужно было бежать yarn installчтобы обновить мой файл yarn.lock и отправить его в репозиторий.

Надеюсь, это может помочь кому-то в будущем.

Иногда ошибка возникает, если запускается из папки, в которой нет файла yarn.lock. Например, при сборке внутри докера, который содержит отдельные интерфейс и серверную часть.

Решение 1

В этом случае перейдите в конкретную папку внешнего интерфейса, которая содержит папку package.json и yarn.lock, и запуститеyarn installоттуда.

Решение 2

бегатьyarn add <package>который создаст файл в базовой папке проекта, если команда запускается из базовой папки. Скопируйте содержимое этого файла в существующийyarn.lock. Это должно решить проблему. Вот ссылка для добавления пакета пряжи .

Если бы мы всегда использовали иyarn remove, файл блокировки всегда будет актуальным. Но многие из нас редактируют package.json вручную, а это значит, что файл блокировки может устареть. Мое решение заключалось в том, чтобы (1) всегда запускатьyarn installпрежде чем я сделаю коммит; и в качестве ограничителя обратного хода (2) запустите это черезhuskyпроверять:

      PACKAGE_CHANGED=$(date +"%s" -r package.json)
LOCKFILE_CHANGED=$(date +"%s" -r yarn.lock)
if [ $PACKAGE_CHANGED -gt $LOCKFILE_CHANGED ]
then
  echo AN EXPLANATION OF THE ERROR
  exit 1
fi

Хорошо использовать--frozen-lockfile. Подобный стопор помогает разработчикам запомнить, что требуется.

Другие вопросы по тегам