【问题标题】:Deploying node js app to Heroku将 node js 应用程序部署到 Heroku
【发布时间】:2014-12-13 03:22:30
【问题描述】:

我已经搜索了许多 stackoverflow q/a,但似乎仍然无法解决这个问题。我正在尝试将我的 node js 应用程序部署到 Heroku,并不断出错。我可以在本地运行它。

错误:

2014-10-17T13:47:11.174606+00:00 heroku[web.1]: State changed from crashed to starting
2014-10-17T13:47:13.312806+00:00 heroku[web.1]: Starting process with command `node index.js`
2014-10-17T13:47:14.494495+00:00 app[web.1]: module.js:340
2014-10-17T13:47:14.493848+00:00 app[web.1]: 
2014-10-17T13:47:14.504444+00:00 app[web.1]:     at Function.Module._resolveFilename (module.js:338:15)
2014-10-17T13:47:14.504440+00:00 app[web.1]: Error: Cannot find module '/app/index.js'
2014-10-17T13:47:14.494889+00:00 app[web.1]:     throw err;
2014-10-17T13:47:14.495090+00:00 app[web.1]:           ^
2014-10-17T13:47:14.504450+00:00 app[web.1]:     at node.js:906:3
2014-10-17T13:47:14.504449+00:00 app[web.1]:     at startup (node.js:119:16)
2014-10-17T13:47:14.504447+00:00 app[web.1]:     at Function.Module.runMain (module.js:497:10)
2014-10-17T13:47:14.504446+00:00 app[web.1]:     at Function.Module._load (module.js:280:25)
2014-10-17T13:47:15.551015+00:00 heroku[web.1]: State changed from crashed to starting
2014-10-17T13:47:15.550391+00:00 heroku[web.1]: State changed from starting to crashed
2014-10-17T13:47:15.538661+00:00 heroku[web.1]: Process exited with status 8
2014-10-17T13:47:18.391309+00:00 heroku[web.1]: Starting process with command `node index.js`
2014-10-17T13:47:19.331140+00:00 app[web.1]:           ^
2014-10-17T13:47:19.333015+00:00 app[web.1]: Error: Cannot find module '/app/index.js'
2014-10-17T13:47:19.333019+00:00 app[web.1]:     at Function.Module._resolveFilename (module.js:338:15)
2014-10-17T13:47:19.330847+00:00 app[web.1]: module.js:340
2014-10-17T13:47:19.330979+00:00 app[web.1]:     throw err;
2014-10-17T13:47:19.333020+00:00 app[web.1]:     at Function.Module._load (module.js:280:25)
2014-10-17T13:47:19.333021+00:00 app[web.1]:     at Function.Module.runMain (module.js:497:10)
2014-10-17T13:47:19.333023+00:00 app[web.1]:     at startup (node.js:119:16)
2014-10-17T13:47:19.333024+00:00 app[web.1]:     at node.js:906:3
2014-10-17T13:47:19.330240+00:00 app[web.1]: 
2014-10-17T13:47:20.165015+00:00 heroku[web.1]: Process exited with status 8
2014-10-17T13:47:20.182699+00:00 heroku[web.1]: State changed from starting to crashe

我的 app.js 文件:

var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');

var routes = require('./routes/index');
var users = require('./routes/users');

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

// uncomment after placing your favicon in /public
//app.use(favicon(__dirname + '/public/favicon.ico'));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', routes);
app.use('/users', users);

// catch 404 and forward to error handler
app.use(function(req, res, next) {
    var err = new Error('Not Found');
    err.status = 404;
    next(err);
});

app.get('/', function(req, res) {
  res.render('index', { title: 'The index page!' })
});

// error handlers

// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
    app.use(function(err, req, res, next) {
        res.status(err.status || 500);
        res.render('error', {
            message: err.message,
            error: err
        });
    });
}

// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
    res.status(err.status || 500);
    res.render('error', {
        message: err.message,
        error: {}
    });
});


module.exports = app;

我的路由/index.js 文件:

var express = require('express');
var router = express.Router();


/* GET home page. */
router.get('/', function(req, res) {
    res.render('index', { title: 'Index' });
});

module.exports = router;

非常感谢任何帮助

【问题讨论】:

    标签: node.js heroku express ejs


    【解决方案1】:

    默认情况下,Heroku 会查找 index.js 来启动您的应用程序。您正在使用 app.js(这是您正在使用的 Express 生成器提供的默认名称)。

    您可以更改名称,或使用 Procfile 指定您的自定义名称。

    要创建 Procfile,只需在主目录中创建一个名为 Procfile(无扩展名)的新文件。它应该包含这一行:

    web: node app.js
    

    【讨论】:

      猜你喜欢
      • 2018-01-27
      • 2018-01-25
      • 1970-01-01
      • 2017-12-24
      • 2022-01-14
      • 2017-12-26
      • 2017-11-27
      • 1970-01-01
      • 2012-07-16
      相关资源
      最近更新 更多