3

I've searched numerous stackoverflow q/a's and still can't seem to solve this. I'm trying to deploy my node js app to Heroku, and keep getting errors. I can run it on my local just fine.

Error:

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

My app.js file:

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;

my route/index.js file:

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


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

module.exports = router;

Any help is greatly appreciated

0

1 Answer 1

7

By default Heroku looks for index.js to start your app. You're using app.js (this is the default name given by Express generator, which you're using).

You can either change the name, or specify your custom name with a Procfile.

To create a Procfile, simply create a new file named Procfile (no extension) in your main directory. It should contain this line:

web: node app.js
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.