NodeJS error你的锁文件需要更新,但是yarn是用`--frozen-lockfile`运行的

xiozqbni  于 2023-06-22  发布在  Node.js
关注(0)|答案(4)|浏览(302)

我有一个关于yarn.lock文件中的一个依赖项的问题。这个问题是与ldapjs,最新版本有一个错误,关于特殊字符的用户或密码,所以我想冻结它在最新的工作版本,这是1.0.2。
当我把代码提交到master分支时,构建这个项目的步骤开始失败,说出标题的信息。
这是我的dockerfile

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"
ghhaqwfi

ghhaqwfi1#

我被困在同样的错误中,问题是我的yarn.lock文件没有更新。我跟着following link,它解决了我的问题。
显然,我只需要运行yarn install来更新我的yarn.lock文件并推送到存储库。

jecbmhm3

jecbmhm32#

只是更新。经过几次尝试,我终于能够做我想做的事情了。从ldap.js和active directory(包含ldap.js库)中删除^可以完成预期的工作。

6ju8rftf

6ju8rftf3#

如果yarn install是从一个不包含yarn.lock文件的文件夹中运行的,那么有时会发生错误。例如,如果在包含单独的前端和后端的Docker中构建。

方案一

在这种情况下,转到包含package.json和yarn.lock文件夹的特定前端文件夹,并从那里运行yarn install

方案二

运行yarn add <package>,如果从基本文件夹运行命令,则将在项目基本文件夹中生成文件yarn.lock。将该文件的内容复制到现有的yarn.lock。这应该能解决问题。这里是yarn add package的链接。

vmpqdwk3

vmpqdwk34#

如果我们总是使用yarn installyarn remove,锁文件将总是最新的。但是我们中的许多人都是手工编辑package.json的,这意味着锁文件可能已经过时了。我的解决方案是(1)在提交之前总是运行yarn install;然后作为一个backstop(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。像这样的支持可以帮助开发者记住需要什么。

相关问题