Tev*_*own 37 heroku yarnpkg heroku-ci
我使用yarn berry 和heroku 并不断收到错误:
\n \xe2\x9e\xa4 YN0028: \xe2\x94\x82 The lockfile would have been modified by this install, which is explicitly forbidden.\nRun Code Online (Sandbox Code Playgroud)\n这表明我的锁定文件不包含我列出的所有依赖项。在纱线文档中,它说这可以通过运行轻松解决yarn install新的锁定文件并将其推送到 git 可以轻松解决这个问题。不过我已经尝试过这个,尝试使用新的node_modules等,但没有成功。
有其他人使用yarn berry + heroku遇到过这个问题吗?
\n我的存储库是使用工作区的单一存储库。
\nAnd*_*aus 36
我可以通过将 env-var 设置YARN_ENABLE_IMMUTABLE_INSTALLS为 来解决此问题false,如此处建议的那样。
这可能是 Yarn Berry 中的一个错误。我已在这里报告:https ://github.com/yarnpkg/berry/issues/2948
\nUPD :我从 GitHub创建了该存储库的一个新的本地克隆yarn install,并在其中运行,它确实在yarn.lock. 提交这些更改解决了 CI 问题,因此YARN_ENABLE_IMMUTABLE_INSTALLS我不再需要禁用它。
原始的本地存储库显示干净git status,所以我仍然相信这是一个错误。
UPD 2:我的问题是,其中一个 Yarn 工作空间已作为 git 子模块签入 git(我可能使用嵌套.git/文件夹创建了它,然后将其删除)。因此,工作区内容(包括子项)package.json未提交到存储库中,它仅存在于我的本地存储库中,而不存在于远程和 CI 中。
删除 git 子模块并将工作区正确签入存储库后,YN0028错误停止发生。
rea*_*pee 10
如果您的 ENV 不包含任何 CI 变量:
那么它可能是你的纱线配置:
运行一下yarn config get enableImmutableInstalls看看是否启用了。yarn config --why(您还可以通过运行并查找来检查为什么启用它enableImmutableInstalls)。
如果是true,则运行yarn config set -H enableImmutableInstalls false以全局设置该设置的值(或者不带-H参数仅在当前项目中设置它)