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/index
和routes/users
的声明将失败,并且会发生其他不好的事情。
感谢您的最佳答案,最后这对我有用:
"main": "./bin/www", "scripts": { "start": "node ./bin/www" }