javascript - Node JS 应用程序中未处理的错误

标签 javascript node.js npm mean-stack winston

我的 NodeJS 应用程序数据层中有一段未处理的代码连接到数据库。我在我的代码中明确生成错误,同时没有捕获它。这是:

AdminRoleData.prototype.getRoleByRoleId = function (params) {
    var connection = new xtrDatabaseConnection();
    var query = "CALL role_getRoleByRoleId(:p_RoleId)";
    var replacements = { p_RoleId: params.roleId };
    replacements = null;
    return connection.executeQuery(query, Sequelize.QueryTypes.RAW, replacements);
} 

替换 = 空;这是我产生错误的地方。目前这里没有错误处理。我想在我的应用程序中捕获这些未处理的错误。并希望将它们作为未处理的异常或错误记录到文件中。

process.on('uncaughtException', (err) => {
    logger.log('whoops! There was an uncaught error', err);
    // do a graceful shutdown,
    // close the database connection etc.
    process.exit(1);
});

我的问题是我的“uncaughtException”没有被调用。有什么帮助吗?或者在这种情况下的最佳实践。或者在某个集中的地方在全局范围内捕获它们。

最佳答案

如果您使用的是 express,您首先要将所有路由定义为:

app.use('/api/users', 用户); app.use('/api/accounts', accounts); ...

然后你可以像这样捕获 404 错误:

app.use(function(req, res, next) {
  console.log("A request triggered 404");
  next(err);
});

最后是 block ,捕获所有错误:

    // error handler
app.use(function(err, req, res, next) {
  console.log(err.message);
  res.status(err.status || 500);
  res.render('error');
});

注意:函数的顺序很重要。例如,如果您将 404 处理程序放在其他路由之前,那么您所有的响应都将是 404。 Node 将按照您声明的顺序遍历路由,直到找到匹配项。

关于javascript - Node JS 应用程序中未处理的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46466303/

相关文章:

javascript - HTML5 图片预加载

javascript - 换行符不适用于 jQuery .text()

http - 如何监听 Node http-proxy 流量?

node.js - 风 sails 产生[某事]错误

javascript - 如何在 Angular 4 上使用带有 ChartJS 的插件

javascript - 如何读取axios中获取的链接的txt文件?

javascript - jQuery 检查复选框不起作用

asp.net - 实时应用程序 - asp.net 替代 node.js 和 socket.io

javascript - 创建网络 map 应用程序。 Leaflet 还是 OpenLayers?

node.js - 如何解决构建 Angular 应用程序时发生的此错误?