【发布时间】:2013-11-30 20:48:12
【问题描述】:
假设 Node.js v0.10.22 和 Express v3。我一直在尝试解决一个简单的问题:当出现问题时,我想至少显示一个 500 页面并退出服务器(因为显然这是最好的做法 - 所以它可以稍后重新启动)。
就我自己的回调而言,我可以弄清楚——我可以返回一个err 响应并优雅地退出。我无法弄清楚的是下面的场景。我读到的所有内容要么是不稳定的 (http://nodejs.org/api/domain.html),要么是有很多做事方式(域、uncaughtException、中间件错误参数)。
那么,在使用 Node.js + Express 框架时:遇到这些场景时,什么是显示 500 页面并干净退出的最佳方式?
a)sdfg(); /* non-existant function */
b)sdfg /* syntax error */
c)throw new Error("can't connect to redis"); /* 3rd party throws an error */
有办法吗?人们如何在生产中做到这一点? P.S:是的,我看过这个页面:Error handling principles for Node.js + Express.js applications?
【问题讨论】:
-
我使用 Express 错误处理程序(项目
Ehere)来捕获我的 Express 路由/中间件中的任何未处理的错误。 -
我系好了。它并没有捕捉到以上所有内容。
-
我错了@robertklep。经过几天的折腾,似乎域 + 中间件应该能够捕获所有上述错误 - 如果您正确设置它们的顺序。
-
约翰,你能不能把你的解决方案贴出来,这真的很有帮助。