Heroku 不读取节点版本
Posted
技术标签:
【中文标题】Heroku 不读取节点版本【英文标题】:Heroku does not read node version 【发布时间】:2016-01-28 01:35:32 【问题描述】:我有一个想要在 Heroku 上托管的 Node 项目。我在 package.json(位于根目录)中明确定义了 node 和 npm 版本,如下所示:
"name": "*********",
"version": "0.0.0",
"private": true,
"engines":
"node": "0.12.x",
"npm": "2.5.x"
,
"scripts":
"start": "node ./bin/www"
,
"dependencies":
"body-parser": "^1.13.3",
...
但是,当我尝试将应用推送到 heroku 时
git push heroku master
Heroku 尝试构建应用程序,但它似乎无法读取节点和 npm 版本。这是我得到的回复。
remote: -----> Installing binaries
remote: engines.node (package.json): unspecified
remote: engines.npm (package.json): unspecified (use default)
remote:
remote: Resolving node version (latest stable) via semver.io...
remote: Downloading and installing node 4.2.1...
remote: Using default npm version: 2.14.7
为什么heroku没有从package.json中读取node和npm版本?
【问题讨论】:
【参考方案1】:@rdegges 是正确的,package.json 没有正确地提交给 Heroku。因此,出于某种原因,仅仅按照 Heroku 的说明对我不起作用。这是我必须做的才能让它发挥作用。
git clone <my git project>
heroku create <app name>
#remove package.json
mv package.json tmp_package.json
git add package.json
git commit -m "removed package.json"
#re-add package.json
mv tmp_package.json package.json
git add package.json
git commit -m "re-added package.json"
git push heroku master
【讨论】:
【参考方案2】:这对我有用 - 确保您确实已将这些更改提交到 Git,并将存储库推送到 Heroku。您可能还想为您的 Heroku 应用指定准确的 Node 和 NPM 版本号。
虽然这将适用于您指定的变量版本,但不建议这样做,因为版本中的微小更改可能会给您带来问题。
作为参考,这里还有关于指定 Node.js 运行时的 Heroku 文档:https://devcenter.heroku.com/articles/nodejs-support#node-js-runtimes
【讨论】:
【参考方案3】:可能你的master分支不是没有更新的分支,尝试将你要部署的分支合并到master中以便使用:
git push heroku master
【讨论】:
【参考方案4】:不要在版本上给出“x”
"node": "0.12.x",
"npm": "2.5.x"
写完整版。 例如。
"node": "0.12.0",
"npm": "2.5.0"
【讨论】:
【参考方案5】:我尝试了其他解决方案,但对我不起作用。但是,通过更改 package.json 中的 name 字段,它起作用了:
发件人:
...
"name": "foo"
...
收件人:
...
"name": "bar"
...
备选方案 2:
当我不得不在另一台计算机上执行相同操作时,它不起作用,但我尝试删除 package.json
,从头开始重新创建它,然后由于某些奇怪的原因(文件元数据?)起作用:
$ rm package.json
$ npm init
【讨论】:
【参考方案6】:确保 lockfile 是最新的
要更新package-lock.json
,请运行npm install
并将对文件的更改签入到git。
那么,git add . && git commit -m "update pkg-lock" && git push heroku master
【讨论】:
【参考方案7】:在我的情况下,问题在于 package.json,由于一些手动更改而错过了,所以 恢复到旧版本的 repo 解决了我的问题。
【讨论】:
【参考方案8】:正如其他人所说,我将版本添加到 package.json 中,它对我有用。如果没有指定,这些版本是从 Heroku 在构建期间使用的默认值引用的:
"engines":
"node": "14.18.3",
"npm": "6.14.15"
,
另外,我建议通过 CLI 将此设置添加到您的应用中以获得更多输出,这确实很有帮助:
heroku config:set NPM_CONFIG_LOGLEVEL=verbose --app=<your_app_name>
??
【讨论】:
以上是关于Heroku 不读取节点版本的主要内容,如果未能解决你的问题,请参考以下文章
出现错误 - PG::UndefinedColumn(错误:使用 postgres 版本 13.3 的 heroku 上不存在列 d.adsrc