之前使用Express3时,使用supervisor来启动应用,当代码发生变化时会自动加载.
下载换到了Express4上,原来在Express3上能工作的好多都不起作用了.例如:
Express3启动应用使用: node app
Express4启动应用使用: node ./bin/www 或者 DEBUG=projectName ./bin/www
如果不能监测代码变化,自动加载,每次修改都要手动重启,这回让人疯掉的.在网上找到一篇博客,完美的解决了这个问题,在这里记录一下.
相比 supervisor ,nodemon 的优点包括:更轻量级,内存占用更小。使用更加方便,更容易进行扩展等。
nodemon 的使用方法与 supervisor 相似,npm install -g nodemon
直接运行nodemon app.js
即可,可以随时输入rs
回车进行手动重启,非常方便。
更多的使用方法可以在它的 github主页 找到。
Express 4.x 默认将启动模块分离到了./bin/www
中,直接使用 supervisor 无法正常监控应用,使得开发过程中的调试非常不方便。
直接在 app.js 添加 app 模块即可。
var debug = require('debug')('my-application'); // debug模块 app.set('port', process.env.PORT || 3000); // 设定监听端口 // Environment sets... // module.exports = app; 这是 4.x 默认的配置,分离了 app 模块,将它注释即可,上线时可以重新改回来 //启动监听 var server = app.listen(app.get('port'), function() { debug('Express server listening on port ' + server.address().port); });
之后就可以正常的supervisor app 或者 nodemon app
进行调试了。
如果需要彻底改变启动方式,还需要修改packages.json
"scripts": { "start": "node app.js" // 此处将原本的 'node ./bin/www' 改为 'node app.js' }
之后运行npm start
实际就是node app.js
了。