由于nodejs是非阻塞单进程单线程的,一旦nodejs抛出异常,整个服务就会停掉。服务将会非常不稳定。
解决方法:
1. 使程序鲁棒,在有可能出现异常的地方,全部使用try { } catch(){ }进行嵌套。
2. express作为nodejs比较常用的框架,其实nodejs自己也有一定的异常错误捕获机制
// Express' errorHandler function errorHandler(err, req, res, next) { console.error(err.stack); } app.use(errorHandler);
3. 使用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(); });
4. 使用forever启动app.js,forever可以看做是一个nodejs的守护进程,能够启动,停止,重启我们的app应用。
forever start app.js
本文共 1 个回复