Heroku 部署在不存在的 yarn.lock 文件上失败

Posted

技术标签:

【中文标题】Heroku 部署在不存在的 yarn.lock 文件上失败【英文标题】:Heroku deployment fails over yarn.lock file that doesn't exist 【发布时间】:2020-05-16 11:43:01 【问题描述】:

尝试部署到 Heroku 时,我不断收到“发现两个不同的锁定文件”错误

remote: Building source:
remote:  !     Two different lockfiles found: package-lock.json and yarn.lock
remote:        Both npm and yarn have created lockfiles for this application,
remote:        but only one can be used to install dependencies. Installing
remote:        dependencies using the wrong package manager can result in missing
remote:        packages or subtle bugs in production.

我在这里找到了一些具有相同问题的线程,除了... 我没有要删除的 yarn.lock 文件。

如果我运行此线程中建议的命令:Heroku build failing due to Yarn and npm lockfile conflict,我只会收到一条消息,说没有要删除的文件。我在 vsCode 中检查 repo 和我的文件,但我没有看到 yarn.lock 文件,那么为什么 Heroku 认为我有一个 yarn.lock 文件?

解决方案:我发现我已将 heroku 项目配置为根据我对 Github 上的 repo 的提交进行自动部署。我猜我收到的错误消息只是我尝试手动推送到 heroku 时应用的错误消息,而我不应该这样做。如果你遇到这个检查你的heroku设置,如果你有自动部署这种情况可能会出现。

【问题讨论】:

你能不能到你的项目根目录执行命令ls -a?仍然没有yarn.lock 文件?您确定yarn.lock 文件已从远程存储库中删除吗? 我用 ls -a 检查了两者,但仍然没有 yarn.lock。不知道我还能做什么 您是否尝试过通过 Heroku CLI 运行 ls -a? Heroku 上的应用程序实例可能有一个 yarn.lock 文件。示例:“heroku run bash --app your-app-name”。 bash 挂载后,尝试输入 ls -a,看看你是否同时拥有 package.lock 和 yarn.lock。 错误消息是一个但具有误导性的信息,但我发现了我的问题所在。我的部署设置被设置为自动 【参考方案1】:

以防万一...当您键入git push heroku master 时,请确保您是主分支,其中没有两个锁定文件。如果您在另一个分支机构,请尝试git push heroku <your branch name you want to push>

【讨论】:

以上是关于Heroku 部署在不存在的 yarn.lock 文件上失败的主要内容,如果未能解决你的问题,请参考以下文章

Yarn:将 JavaScript 依赖项重新部署到生产服务器的过程(使用 `yarn.lock` 文件)

为啥我的 yarn.lock 文件中有僵尸包?

从 yarn.lock 中删除依赖项

将预先存在的 django git repo 部署到 heroku

Node.js 应用程序无法部署到 Heroku

yarn.lock文件