我的yarn.lock文件中有一个依赖项存在问题。问题是ldapjs,最新版本有一个关于用户或密码中特殊字符的错误,所以我想在1.0.2的最新工作版本中冻结它。
当我把代码提交给master分支时,构建这个项目的步骤开始失败,说出了标题的信息。
这是我的码头文件
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"
我陷入了同样的错误,问题是我的yarn.lock文件不是最新的。我关注了下面的链接,它解决了我的问题。
显然,我只需要运行yarn install
来更新我的yarn.lock文件并推送到存储库。
只是一个更新。经过几次尝试,我终于能够做我想做的事了。从ldap.js和active directory(包含ldap.js库(中删除^完成了预期的工作。
如果从不包含yarn.lock文件的文件夹运行yarn install
,有时会发生错误。例如,如果在包含独立前端和后端的docker内部构建。
解决方案1
在这种情况下,转到包含package.json和yarn.lock文件夹的特定前端文件夹,然后从那里运行yarn install
。
解决方案2
如果从基本文件夹运行命令,则运行yarn add <package>
,它将在项目基本文件夹中生成文件yarn.lock
。将该文件的内容复制到现有的yarn.lock
中。这应该能解决问题。这是纱线添加包的链接。
如果我们始终使用yarn install
和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
是很好的。像这样的后备机制可以帮助开发人员记住需要什么。