Express js error handling?

  • 回答 (2)
  • 关注 (0)
  • 查看 (35)

代码:

var express = require('express');
var app = express();

app.use(function(err, req, res, next) {
    console.log("error!!!");
    res.send("error!!!");
});

app.get('/', function(request, response) {
    throw "some exception";
    response.send('Hello World!');
});

app.listen(5000, function() {
  console.log("Listening on 5000");
});


error:
 Express js error handling 
一夜之后的沉默一夜之后的沉默提问于
fly_with_heartPHP Coder.回答于

1)代码无法工作,因为错误处理程序中间件是在到达路由之前运行的,因此错误处理程序从来没有机会将错误传递给它。这种样式称为延拓传递。将错误处理程序放在中间件堆栈中。

2)当有未处理的错误时,应该关闭服务器。最好的方法就是调用server.close(),其中服务器是执行以下操作的结果:var server = http.createServer(app);

也就是说,你应该这样做:

var server = http.createServer(app);

app.use(function(err, req, res, next) {
  console.log("error!!!");
  res.send("error!!!");
  server.close();
});

可能还应该超时server.lose()

var server = http.createServer(app);

app.use(function(err, req, res, next) {
  console.log("error!!!");
  res.send("error!!!");

  server.close();

  setTimeout(function () {
    process.exit(1);
  }, 3*1000);
});

回答过的其他问题

如何寻找最适合自身的云应用模式?

fly_with_heartPHP Coder.
腾讯云私有化存储CSP(CloudStorageonPrivate)为客户提供机房私有部署、腾讯云机房专区部署两种方式,在满足客户多场景需求的同时,也保障其对系统100%的可控性。  直面市场挑战,腾讯云重拳出击     众所周知,公有云存储的绝大部分客户是来自于小型企业或开发者...... 展开详请

C#中Windows域用户名的正则表达式是什么?

fly_with_heartPHP Coder.
以下是带有命名组的正则表达式,可以将其粘贴到Linqpad中并运行。请注意,实际上Active Directory中的用户名中允许有很多字符,实际上任何Unicode字符都会保存一些特殊字符(其中包括LDAP搜索等)。 哦是的 - 英文字母以Z结尾。在挪威语中,我们有三个额外的...... 展开详请

使用响应302从aws api网关重定向

fly_with_heartPHP Coder.
首先,您要为“location”标题创建方法响应。然后,您希望从Lambda的响应中映射位置标头值。在Node.js运行时,您可以将其映射到 integration.response.body.errorType。这样你就可以通过以下方式重定向: // Returns 30...... 展开详请

将Autosys作业状态视为依赖关系图

fly_with_heartPHP Coder.

你看过AutoSys的iXp GUI吗?我已经使用了它,它非常好,因为它显示了列表中的依赖项以及执行状态,它还包含一个概述图。

如何使用Razor / C#值预先填充“日期”输入字段

fly_with_heartPHP Coder.
正确的命令结束了 @Model["order"].DeliveredDate.ToString("yyyy-MM-dd") 但后来我了解到,有一个日期范围可以显示,并且它随着不同的平台而变化,但我很确定可以显示的范围是1950年到2049年之间。 一旦我实际设置了它应该...... 展开详请

匹配周名称与PHP中的星期天数

fly_with_heartPHP Coder.
已采纳
因此,根据您的示例,您实际上是在输出2017年11月的信息,该信息从星期三开始。 为了达到你想要的效果,你只需要找出一周中的哪一天,然后$list如果你需要填补月份,就可以在阵列中添加额外的“空”项。 要找出一周的日期,请使用: ... // Your existing cod...... 展开详请

所属标签

扫码关注云+社区