【问题标题】:heroku doesn't install the changed version of npm package and installs old version insteadheroku 不安装更改版本的 npm 包,而是安装旧版本
【发布时间】:2021-08-01 16:53:42
【问题描述】:

问题

我在正确导入其中一个包并在后端的 MERN 应用程序中使用它时遇到了困难。在研究并查看了部署的代码后,我知道我的应用程序正在使用该软件包的不需要的版本,因此它导致了问题,但我已经在推送之前更改了package.json 中的版本。我在这里写了 unwanted 因为在我的情况下,新版本的包有错误,这就是为什么我想要旧/以前的版本,但我无法知道导致 heroku 的确切原因或事情一次又一次地使用不需要的版本

为了清晰:

  1. 初始版本:1.6.6(工作正常)
  2. 然后我安装了版本:1.7.0(发现错误)不需要的版本
  3. 尝试返回版本:1.6.6 但无法返回

我尝试过的

我尝试的第一件事是将NODE_MODULES_CACHE 设置为false 以避免heroku 拾取旧代码,因为它过去对我有用。除此之外,我找不到其他任何东西。

heroku 日志中没有任何可疑之处,它构建应用程序时没有任何错误。

【问题讨论】:

  • 欢迎来到 Stack Overflow。请阅读How to Ask。不要描述你的问题; 给我们看!什么是特定的不需要的版本,你想要哪个版本?您的package.json 中有什么内容?你的部署日志说什么?您是刚刚更新了package.json,还是在本地安装了正确的库并提交了更新的yarn.lock/package-lock.json
  • @Chris 谢谢您的回复!那天我找到了问题的解决方案,但我忘了发帖,但今天我做到了。无论如何,我已经按照您的说法对问题进行了更改。我仍在学习写出好的问题和答案,相信我我正在尽我所能。如果可以,请您再看一遍并给我反馈。谢谢!

标签: heroku npm


【解决方案1】:

如果有人在寻找它,我找到了解决方案。这不是一个解决方案,而是更多关于 heroku 的工作原理。

Heroku 使用 npm ci 而不是 npm install

npm ci 安装与package-lock.json 相关的所有依赖项,类似于npm install。这里的主要区别在于ci 在任何情况下都不会改变package-lock.json

所以基本上,package-lock.json 在我的情况下仍然是不需要的,heroku 正在安装它,而不是我推入 package.json 的东西,因为这无关紧要。

所以,为了解决这个问题,你有两个选择:

  1. 您可以推送更新后的package-lock.json。就我而言,我故意不将package-lock.json 添加到版本控制中,因为我认为heroku 会更新它,所以我把它放在.gitignore

  2. 您可以将USE_NPM_INSTALL 环境变量设置为true,让Heroku 知道您想使用npm install 而不是npm ci 来创建构建环境。 (注意:如果你想使用npm install,Heroku 建议使用NODE_MODULES_CACHE=false,因为它会加快构建时间)

我选择了选项 1。

Heroku 文档链接:https://devcenter.heroku.com/articles/nodejs-support

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-09
    • 1970-01-01
    • 2020-03-25
    • 1970-01-01
    • 2017-01-07
    • 2017-10-04
    • 2018-01-20
    相关资源
    最近更新 更多