我将我的应用程序部署到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(初始化脚本)如下
// 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;
我不知道发生了什么,特别是因为它在localhost和部署上运行良好。任何帮助表示赞赏。
答案 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变量。