简体   繁体   English

Heroku node.js应用程序在本地运行,但远程崩溃

[英]Heroku node.js app runs locally but crashes remotely

I have a node.js application which is not a web application . 我有一个不是Web应用程序的node.js应用程序 Here's my package.json : 这是我的package.json

{
  "name": "myapp-backend",
  "version": "1.0.0",
  "description": "MyApp PubNub backend",
  "main": "app.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "repository": {
    "type": "git",
    "url": "https://git.heroku.com/myapp.git"
  },
  "keywords": [
    "backend"
  ],
  "author": "Pete Gu",
  "license": "ISC",
  "dependencies": {
    "pubnub": "^4.3.3"
  },
  "engines": {
    "node" : "6.9.2"
  }
}

Contents of Procfile : Procfile内容:

app: node app.js

It runs when I run heroku local . 它在我运行heroku local时运行。 However, after pushing the code and checking logs with heroku logs I see this: 但是,在推送代码并使用heroku logs检查日志后,我看到以下内容:

2016-12-22T06:07:01.276053+00:00 app[api]: Deploy fb193d3 by user xxxxx@xxxx.com
2016-12-22T06:07:01.477131+00:00 heroku[slug-compiler]: Slug compilation started
2016-12-22T06:07:01.477136+00:00 heroku[slug-compiler]: Slug compilation finished
2016-12-22T06:07:01.276053+00:00 app[api]: Release v13 created by user gpeetonn@gmail.com
2016-12-22T06:07:01.507095+00:00 heroku[web.1]: State changed from crashed to starting
2016-12-22T06:07:02.759643+00:00 heroku[web.1]: Starting process with command `npm start`
2016-12-22T06:07:06.003266+00:00 heroku[web.1]: Process exited with status 1
2016-12-22T06:07:06.016232+00:00 heroku[web.1]: State changed from starting to crashed
2016-12-22T06:07:06.017114+00:00 heroku[web.1]: State changed from crashed to starting
2016-12-22T06:07:05.872484+00:00 app[web.1]: npm ERR! Linux 3.13.0-105-generic
2016-12-22T06:07:05.872909+00:00 app[web.1]: npm ERR! argv "/app/.heroku/node/bin/node" "/app/.heroku/node/bin/npm" "start"
2016-12-22T06:07:05.873173+00:00 app[web.1]: npm ERR! node v6.9.2
2016-12-22T06:07:05.873421+00:00 app[web.1]: npm ERR! npm  v3.10.9
2016-12-22T06:07:05.877486+00:00 app[web.1]: npm ERR! missing script: start
2016-12-22T06:07:05.875800+00:00 app[web.1]: 
2016-12-22T06:07:05.877738+00:00 app[web.1]: npm ERR! 
2016-12-22T06:07:05.877884+00:00 app[web.1]: npm ERR! If you need help, you may report this error at:
2016-12-22T06:07:05.878031+00:00 app[web.1]: npm ERR!     <https://github.com/npm/npm/issues>
2016-12-22T06:07:05.892349+00:00 app[web.1]: 
2016-12-22T06:07:05.892997+00:00 app[web.1]: npm ERR!     /app/npm-debug.log
2016-12-22T06:07:05.892655+00:00 app[web.1]: npm ERR! Please include the following file with any support request:
2016-12-22T06:07:07.532860+00:00 heroku[web.1]: Starting process with command `npm start`
2016-12-22T06:07:10.603753+00:00 app[web.1]: npm ERR! Linux 3.13.0-105-generic
2016-12-22T06:07:10.604065+00:00 app[web.1]: npm ERR! argv "/app/.heroku/node/bin/node" "/app/.heroku/node/bin/npm" "start"
2016-12-22T06:07:10.604260+00:00 app[web.1]: npm ERR! node v6.9.2
2016-12-22T06:07:10.604476+00:00 app[web.1]: npm ERR! npm  v3.10.9
2016-12-22T06:07:10.606525+00:00 app[web.1]: 
2016-12-22T06:07:10.607621+00:00 app[web.1]: npm ERR! missing script: start
2016-12-22T06:07:10.607822+00:00 app[web.1]: npm ERR! 
2016-12-22T06:07:10.607900+00:00 app[web.1]: npm ERR! If you need help, you may report this error at:
2016-12-22T06:07:10.607998+00:00 app[web.1]: npm ERR!     <https://github.com/npm/npm/issues>
2016-12-22T06:07:10.618207+00:00 app[web.1]: 
2016-12-22T06:07:10.618415+00:00 app[web.1]: npm ERR! Please include the following file with any support request:
2016-12-22T06:07:10.618645+00:00 app[web.1]: npm ERR!     /app/npm-debug.log
2016-12-22T06:07:10.718608+00:00 heroku[web.1]: State changed from starting to crashed
2016-12-22T06:07:10.710362+00:00 heroku[web.1]: Process exited with status 1

...which completely doesn't make sense to me - why heroku tries to launch app using npm start instead of reading Procfile ? ...这对我完全没有意义-为什么heroku尝试使用npm start而不是读取Procfile来启动应用npm start

Heroku seems to be trying to start a web dyno, and doesn't seem to know about your Procfile. Heroku似乎正在尝试启动Web dyno,并且似乎不了解您的Procfile。

Are you sure you added your Procfile to your git repo? 您确定将Procfile添加到git repo中了吗?

Anyway, try this: 无论如何,请尝试以下操作:

heroku ps:scale web=0
heroku ps:scale app=1

You could also add "start": "node app.js" in the "scripts" section of your package.json. 您还可以在package.json的“脚本”部分中添加“ start”:“ node app.js”。

I can see the error missing script: start So you need to add 我可以看到错误缺少的脚本:start因此,您需要添加

"scripts": {
"start": "node bin/xxx" //your main file name
}

add this to your package.json. 将此添加到您的package.json中。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM