Heroku Node.js app"进程退出状态1"和错误h10

时间:2017-05-01 03:08:40

标签: javascript node.js heroku

我将我的应用程序部署到heroku没有任何问题。我能够在localhost:5000上运行heroku local web并且它有效。当我去网络dyno地址时,它说应用程序错误。我检查了网站的日志,并说:

 2017-05-01T02:52:30.980217+00:00 app[web.1]:     at Connection.<anonymous> (/app/node_modules/mongodb-core/lib/connection/pool.js:274:12)
 2017-05-01T02:52:30.980218+00:00 app[web.1]:     at emitTwo (events.js:106:13)
 2017-05-01T02:52:30.980218+00:00 app[web.1]:     at Socket.<anonymous> (/app/node_modules/mongodb-core/lib/connection/connection.js:177:49)
 2017-05-01T02:52:30.980218+00:00 app[web.1]:     at Connection.emit (events.js:191:7)
 2017-05-01T02:52:30.980219+00:00 app[web.1]:     at emitOne (events.js:96:13)
 2017-05-01T02:52:30.980220+00:00 app[web.1]:     at Socket.emit (events.js:188:7)
 2017-05-01T02:52:30.980221+00:00 app[web.1]:     at process._tickCallback (internal/process/next_tick.js:104:9)
 2017-05-01T02:52:31.040828+00:00 heroku[web.1]: State changed from starting to crashed
 2017-05-01T02:52:31.029211+00:00 heroku[web.1]: Process exited with status 1
 2017-05-01T02:52:40.638415+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=room111-thoughts.herokuapp.com request_id=91b591cf-3d8d-4d94-8caf-7b1b868b088b fwd="108.221.62.78" dyno= connect= service= status=503 bytes= protocol=https
 2017-05-01T02:52:41.600924+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=room111-thoughts.herokuapp.com request_id=c8f6c2d3-dc38-4e65-9a20-581910f42b36 fwd="108.221.62.78" dyno= connect= service= status=503 bytes= protocol=https

我正在使用node.js和server.js(初始化脚本)如下

&#13;
&#13;
// load environment variables
require('dotenv').config();

// grab our dependencies
const express    = require('express'),
  app            = express(),
  port           = process.env.PORT || 8080,
  expressLayouts = require('express-ejs-layouts'),
  mongoose       = require('mongoose'),
  bodyParser     = require('body-parser'),
  session        = require('express-session'),
  cookieParser   = require('cookie-parser'),
  flash          = require('connect-flash'),
  expressValidator = require('express-validator');

// configure our application ===================
// set sessions and cookie parser
app.use(cookieParser());
app.use(session({
  secret: process.env.SECRET, 
  cookie: { maxAge: 60000 },
  resave: false,    // forces the session to be saved back to the store
  saveUninitialized: false  // dont save unmodified
}));
app.use(flash());

// tell express where to look for static assets
app.use(express.static(__dirname + '/public'));

// set ejs as our templating engine
app.set('view engine', 'ejs');
app.use(expressLayouts);

// connect to our database
mongoose.connect(process.env.DB_URI);

// use body parser to grab info from a form
app.use(bodyParser.urlencoded({ extended: true }));
app.use(expressValidator());

// set the routes =============================
app.use(require('./app/routes'));

// start our server ===========================
app.listen(port, () => {
  console.log(`App listening on http://localhost:${port}`);
});
&#13;
&#13;
&#13;

我不知道发生了什么,特别是因为它在localhost和部署上运行良好。任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:1)

我遇到了完全相同的问题。我没有使用mongo db,但错误是一样的:

2018-01-23T09:30:10.806568+00:00 heroku[web.1]: Process exited with status 1
2018-01-23T09:30:10.823360+00:00 heroku[web.1]: State changed from starting to crashed
2018-01-23T09:30:32.001596+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/"....

该应用程序完全适用于localhost,但在heroku上部署时崩溃了。 Heroku网站日志页面根本没有帮助,所以我通过命令行在本地尝试:heroku logs --tail并且网站上没有显示的许多日志出来了。那些日志说:

2018-01-23T09:30:09.431324+00:00 heroku[web.1]: Starting process with command `node server.js`
2018-01-23T09:30:10.771449+00:00 app[web.1]: module.js:540
2018-01-23T09:30:10.771465+00:00 app[web.1]:     throw err;
2018-01-23T09:30:10.771466+00:00 app[web.1]:     ^
2018-01-23T09:30:10.771468+00:00 app[web.1]:
2018-01-23T09:30:10.771470+00:00 app[web.1]:     at Function.Module._resolveFilename (module.js:538:15)
2018-01-23T09:30:10.771469+00:00 app[web.1]: Error: Cannot find module 'express'

我意识到我必须安装快递,所以我运行:

npm install express
git push heroku master
heroku open 

它有效。 希望它也适合你!!

答案 1 :(得分:0)

通过调用heroku config检查环境变量DB_URI并查看列出的内容。该错误表明您的连接被拒绝,因此我的猜测是没有配置mongo db或者没有在heroku app上下文中设置环境变量。

答案 2 :(得分:0)

对我来说,上面关于环境变量的答案就是它。我的问题与在MONokuDB_URI变量中没有将其设置为heroku中的环境变量有关,而是在运行cli时返回的heroku config在cli中没有任何变量。

该修复程序正在运行: heroku插件:创建mongolab:沙盒

如果需要heroku推送,那么heroku配置现在应该显示您的.env变量。