因为node是单线程,并且使用大量的回调, 所以有一点错误的话就会导致node程序崩掉, 虽然使用try catch 可以在一定程度上有效的捕获异常,但是有没有更好的方法或者机制?
IBM Express的web framework里有domain中间件来处理未捕获的异常,和避免 进程退出。 但是,我推荐使用forever或pm2来实现,进程终止 后 再 重启 的工作。
@stuartZhang express不是ibm的
@stuartZhang 生产环境我使用forever,确实是可以做到这一点,同时还可以记录日志。
@i5ting 我之前看新闻说:Express被strongloop公司管理。然后,strongloop又被IBM收购。所以,我以为Express是IBM的呢。
@stuartZhang 那是express极其不活跃的时间段,现在是独立的了
@stuartZhang @i5ting 还是说 strongloop 比较合适吧。。。ibm 太大了。 话说 domain 模块已经不推荐使用了。express 的源码里面用了 domain?
node 的容错目前我见过的最好的方案是这样的。 https://npm.taobao.org/package/graceful 这个模块在你的server抛错之后,会暂停所有新请求的连接,然后再存活一个 timeout 时间,之后退出。而非一抛错马上退出
@alsotang 此模块收藏。我会向我们佬大推荐使用这个模块。