【发布时间】:2016-11-29 16:18:40
【问题描述】:
我对 Express.js 还很陌生,与 Apache 或 IIS 等其他服务器相比,一开始让我更惊讶的是,Express.js 服务器每次崩溃它遇到未捕获的异常或某些错误关闭站点并使其可供用户访问。可怕的事情!
例如,我的应用程序因 Javascript 错误而崩溃,因为由于数据库表中的名称更改而未定义变量。
TypeError: 无法调用未定义的“替换”方法
这不是一个很好的例子,因为我应该在将网站转移到生产环境之前解决它,但有时可能会出现类似的错误,这不应该导致服务器崩溃。
我希望看到一个错误页面,或者只是该特定页面中的一个错误,但是关闭整个服务器对于这类事情听起来很可怕。
Express error handlers 似乎不足以满足此目的。
我一直在阅读有关如何在 Node.js by using domains 中解决此类问题的信息,但我没有找到专门针对 Express.js 的内容。
我发现的另一个选项,似乎并非在所有情况下都被推荐,是使用工具来保持进程永远运行,因此在崩溃后,它会自行重启。 Forever、Upstart 或 Monit 等工具。
你们如何处理 Express.js 中的这类问题?
【问题讨论】:
-
我们在 OpenShift 上部署我们的服务器,他们使用节点主管 (npmjs.org/package/supervisor) 在崩溃后保持我们的服务器正常运行。你可能想看看这个包。
-
@Ben 听起来与
nodemon相似,但它也会在服务器崩溃时重新启动。
标签: javascript node.js express