获取 YN0028 锁定文件将已被此安装修改,这是明确禁止的。使用纱线浆果和heroku

Posted

技术标签:

【中文标题】获取 YN0028 锁定文件将已被此安装修改,这是明确禁止的。使用纱线浆果和heroku【英文标题】:getting YN0028 The lockfile would have been modified by this install, which is explicitly forbidden. using yarn berry and heroku 【发布时间】:2021-07-07 18:22:59 【问题描述】:

我正在使用 yarn berry 和 heroku 并不断收到错误:

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

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

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

我的 repo 是一个使用工作区的 monorepo。

【问题讨论】:

遇到同样的问题。你解决了吗? 【参考方案1】:

按照here 的建议,我可以通过将 env-var 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 工作空间之一已作为 git 子模块检入 git(我可能使用嵌套的 .git/ 文件夹创建了它,然后将其删除)。结果,工作区内容,包括子 package.json 没有提交到仓库中,它只存在于我的本地仓库中,而不存在于远程和 CI 中。

删除 git 子模块并将工作区正确签入 repo 后,YN0028 错误停止发生。

【讨论】:

你好。 YARN_ENABLE_IMMUTABLE_INSTALLS 放在哪里,谢谢 @AlainIb 我已经在这里回复你了:github.com/renovatebot/renovate/discussions/… 是的,我看到了来自 github 的电子邮件通知。非常感谢你。当我关闭当前任务时,我会尽快尝试。祝你有美好的一天

以上是关于获取 YN0028 锁定文件将已被此安装修改,这是明确禁止的。使用纱线浆果和heroku的主要内容,如果未能解决你的问题,请参考以下文章

azurew网站持续部署 - Web Deploy无法修改目标上的文件“XXX”,因为它已被外部进程锁定

Vmware无法获取快照信息 锁定文件失败

Vmware无法获取快照信息 锁定文件失败

/var/run/yum.pid 已被锁定,PID 为 XXXX 的另一个程序正在运行。

centos7使用yum安装时提示/var/run/yum.pid 已被锁定,PID 为 3602

soffice - 已被该用户锁定编辑(is locked for editing by)