Heroku不读取节点版本

我有一个Node项目,我想在Heroku上托pipe。 我已经在我的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试图构build应用程序,但似乎不能reed节点和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读取节点和npm版本?

@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 

这对我有用 – 确保你已经将这些改变实际上提交给了Git,并把版本库推送到了Heroku。 您可能还需要为您的Heroku应用程序指定确切的节点和NPM版本号。

虽然这将适用于您指定的variables版本,但不build议这样做,因为版本中的小改动可能会对您造成问题。

作为参考,下面是指定Node.js运行库的Heroku文档: https : //devcenter.heroku.com/articles/nodejs-support#node-js-runtimes

我尝试了其他的解决scheme,但它不适合我。 但是,通过更改package.json中的名称字段,它工作:

从:

 { ... "name": "foo" ... } 

至:

 { ... "name": "bar" ... } 

备选案文2

当我不得不在另一台计算机上做同样的事情时,它不起作用,但我尝试删除package.json ,从头开始重新创build它,然后出于某种奇怪的原因(文件元数据?):

 $ rm package.json $ npm init 

也许你的主分支不是没有更新的分支,尝试合并你想部署的分支到master中以便使用:

 git push heroku master