getting YN0028 锁定文件将被此安装修改,这是明确禁止的。使用 yarn berry 和 heroku

getting YN0028 The lockfile would have been modified by this install, which is explicitly forbidden. using yarn berry and heroku

我正在使用 yarn berry 和 heroku,但一直收到错误消息:

       ➤ YN0028: │ The lockfile would have been modified by this install, which is explicitly forbidden.

这表明我的锁定文件不包含我列出的所有依赖项。在 yarn 文档中,它说这很容易通过 运行 yarn install 并将新的锁定文件推送到 git 来解决。但是我已经尝试过这个,尝试过新鲜的 node_modules,等等,但没有成功。

有没有其他人在使用 yarn berry + heroku 时遇到过这个问题?

我的存储库是一个使用工作空间的单一存储库。

我能够按照建议 here.

将环境变量 YARN_ENABLE_IMMUTABLE_INSTALLS 设置为 false 来解决问题

这可能是 Yarn Berry 中的错误。我已在此处报告:https://github.com/yarnpkg/berry/issues/2948


UPD:我从 GitHub、运行 中创建了 repo 的全新本地克隆 yarn install,它确实在 yarn.lock 中产生了变化。提交这些更改解决了 CI 问题,因此我不再需要禁用 YARN_ENABLE_IMMUTABLE_INSTALLS

原来的本地 repo 显示干净 git status,所以我仍然认为这是一个错误。

UPD 2:我的问题是 Yarn worspaces 之一被签入 git 作为 git 子模块(我可能用一个嵌套的 .git/ 文件夹,然后将其删除)。结果,工作区内容,包括子 package.json 没有提交到回购中,它只存在于我的本地回购中而不存在于远程和 CI.

删除 git 子模块并将工作区正确检查到存储库后,YN0028 错误停止发生。

我 运行 遇到了同样的问题。我通过删除缓存然后重新安装依赖项来解决问题。

yarn.lock 文件在重新安装完成时进行了修改。

我相信这可能是因为我最初检查了 cache 文件夹,然后将其还原。不确定这是否会导致我的本地环境与 checked-in 存储库之间存在差异。