如何处理Node js app错误以防止崩溃

时间:2015-03-01 16:58:11

标签: node.js

我是节点的新手,我称之为真正的服务器端编程(与PHP相比)。我正在使用MongoDB,Mongoose和一个简单的mongoose用户插件来设置用户数据库,该插件附带了一个架构和密码。您可以为您的字段添加验证到Mongoose,如此

schema.path('email').validate(function (email) {
    if (this.skipValidation) return true
    return email.trim().length
  }, 'Please provide a valid email')

(这不是我的代码)。我注意到,当我通过无效或空白的电子邮件时,.trim()失败,整个服务器崩溃了。这对我来说非常令人担忧,因为这样的事情不会发生在你好的'WAMP堆栈中。如果您有错误,99.9%的时间只是受影响的浏览器。

现在我正在深入研究低级编程,我是否必须对每个传入的变量都是偏执到一个简单的函数?我应该遵循一个经过验证的错误系统吗?

4 个答案:

答案 0 :(得分:2)

在使用带有trim的变量之前,只需检查,如果是!null,例如:

if(!email) {
    return false;
}

如果您想永久运行您的应用,请使用PM2。 如果您有兴趣永远跑步,请阅读这篇有趣的帖子http://devo.ps/blog/goodbye-node-forever-hello-pm2/

答案 1 :(得分:1)

您可以考虑使用forever来保持node.js程序的运行。即使它崩溃,它也会自动重启并记录错误。

注意:虽然您实际上可以捕获所有异常以防止node.js崩溃,但不建议这样做。

答案 2 :(得分:1)

我们的一个策略是利用Node.js域来处理错误 - http://nodejs.org/api/domain.html

答案 3 :(得分:0)

您应该设置错误记录节点模块,如Winston,一旦配置产生有用的错误/异常。

this answer中查看如何在节点实现中捕获错误,但具体针对 expressjs 但相关。

一旦捕获异常,就可以防止意外崩溃。