參考鏈接:
http://blog.coinidea.com/web開發/nodejs-1131.html
由於nodejs是非阻塞單進程單線程的,一旦nodejs拋出異常,整個服務就會停掉。服務將會非常不穩定。
解決方法:
- 使程序魯棒,在有可能出現異常的地方,全部使用try { } catch(){ }進行嵌套。
- express作為nodejs比較常用的框架,其實nodejs自己也有一定的異常錯誤捕獲機制
// Express' errorHandler
function errorHandler(err, req, res, next) {
console.error(err.stack);
}
app.use(errorHandler);
- 使用domain模塊,先下載domain, “npm install domain”
//Domain捕獲異常
app.use(function(req, res, next) {
var domain = createDomain();
domain.on('error', function(err) {
// alternative: next(err)
console.log(err.stack);
res.statusCode = 500;
res.end(err.message + '\n');
domain.dispose();
});
domain.enter();
next();
});
- 使用forever啟動app.js,forever可以看做是一個nodejs的守護進程,能夠啟動,停止,重啟我們的app應用。
forever start app.js
