node.js - NodeJS : prevent application to crash on error

标签 node.js error-handling

当NodeJS应用程序发生错误时,如果发生异常,服务器可能会崩溃并停止。

如何防止这种情况,以便服务器永远不会因错误而停止,而是返回错误代码?

-- 编辑

这是一个导致服务器崩溃的方法(表 foo 不存在):

app.get('/articles/list', function(req, res) {
    connection.query('select * from foo', function(err, rows, fields) {
        if (err) throw err;
        res.send(JSON.stringify(rows));
    });
});

--最佳解决方案 最后,我找到了最适合我的解决方案: http://rowanmanning.com/posts/node-cluster-and-express/

总而言之,它包括使用服务器集群,并在服务器退出时重新启动服务器

最佳答案

如果您使用express,则可以使用此

function clientErrorHandler (err, req, res, next) {
   if (req.xhr) {
      res.status(500).send({ error: 'Something failed!' })
    } else {
      next(err)
   }
}

app.use(clientErrorHandler);

我建议你准备好这个article ,它会为你澄清很多。 JFK,一旦您拥有包含在 try-catch 中的异步内容,请注意异步错误捕获,这是最常见的错误。 另外,避免使用

process.on("uncaughException", () => {....})

这非常糟糕,因为当抛出未捕获的异常时,此时您无法可靠地继续您的程序。让它失败并使用 daemonizer's 重新启动,例如 pm2forever 等。

关于node.js - NodeJS : prevent application to crash on error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41166804/

相关文章:

javascript - 如何使用 Angular(8) UI 在远程 Linux 服务器上运行 shell 脚本?

javascript - 如何使用 Node Express JS 获取完整的 url 并发送到其他 js 页面

node.js - 将文件上传到 aws 存储桶时,Multer 将 req.file 返回为未定义,并将 req.file.location 返回为位置未定义

javascript - JS Bluebird Promise错误未提供任何细节

php - Symfony表单未显示正确的错误(正在星座图上)

javascript - 如何将 req.flash() 与 EJS 一起使用?

node.js - 在 node.js 中创建 S3 签名 URL

c# - Unity C#中的更多脚本问题

vb.net - 如何在 vb.net 中使用 DataError 事件防止负整数和空白输入

sql-server - 在 Node.js 中防止 SQL 注入(inject)的最佳方法