Supervisor节点.js“程序节点应用程序退出代码0”错误

当我安装一个快速脚手架的应用程序

express 

然后运行npm install

 npm install 

然后运行主pipe

 supervisor app 

我明白了

 Starting child process with 'node app' Program node app exited with code 0 

app.js文件是一个基本的默认快速实例。

 var express = require('express'); var path = require('path'); var favicon = require('static-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', 'jade'); app.use(favicon()); app.use(logger('dev')); app.use(bodyParser.json()); app.use(bodyParser.urlencoded()); 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); }); /// 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; 

生成器创build的应用程序./bin/www包含app.js ,然后开始监听通信。

app.js 本身不这样做

我认为这是重要的理解。

app.listen 没有app.js被调用,但在./bin/www调用,这就是为什么你得到exit 0结果。 当你调用app.js而不是./bin/www它通过文件运行,但是因为没有命令来监听stream量,程序正常结束…即没有做任何事情。

这就是说,你有两个select..

选项1

如果你有一个./bin/www文件,你可以运行supervisor ./bin/www来启动。

选项2

如果你没有./bin/www文件出于任何原因,你可以编辑你的应用程序文件看起来像这样。

在您的应用程序列表中,replace

 module.exports = app; 

有了这个

 app.set('port', process.env.PORT || 3000); var server = app.listen(app.get('port'), function() { debug('Express server listening on port ' + server.address().port); }); 

重要的提示

虽然该编辑将启动应用程序侦听,您将不会再得到一个exit 0 ,我不能保证,如果其他文件和目录丢失,该应用程序不会与其他错误崩溃。 例如,如果routes目录不存在,则需要routes/indexroutes/users的声明将失败,并且会发生其他不好的事情。

感谢您的最佳答案,最后这对我有用:

 "main": "./bin/www", "scripts": { "start": "node ./bin/www" }