Express js error handling?

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

代码:

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%的可控性。  直面市场挑战,腾讯云重拳出击     众所周知,公有云存储的绝大部分客户是来自于小型企业或开发者...... 展开详请

在本地执行rsubmit语句

fly_with_heartPHP Coder.
RSUBMIT还可以使用与本地服务器的连接。这通常在实现多处理时完成。 如果你想这样做,你可以设置特定于站点的连接脚本,在本地PC上,连接脚本表示连接到Unix服务器,在Unix服务器上,连接脚本......仍然表示要连接到Unix服务器。然后确保你已经相同地命名了这些连接,因...... 展开详请

装饰器的顺序在Flask视图上是否重要?

fly_with_heartPHP Coder.
根据login_required的实现, def login_required(func): @wraps(func) def decorated_view(*args, **kwargs): if current_app.login_manag...... 展开详请

错误:14094438:SSL例程:SSL3_READ_BYTES:tlsv1 alert内部错误,stream_socket_client():SSL操作失败,代码为1

fly_with_heartPHP Coder.
这样: - >创建一个新的服务器证书使用IP地址(我的服务器实际绑定到的外部)作为公共名称,使之运行~。 首先使用主机名作为公共名称,然后发现(本地和不正确)解析为127.0.0.1,因此不是上面的绑定地址。 不是说这是如何解决这个问题,但它可能会澄清一个潜在的原因。... 展开详请

更改当前Themeable Browser窗口的URL

fly_with_heartPHP Coder.
const browser = cordova.ThemeableBrowser; 我看不出ThemeableBrowserObject的用途,并且.create()不存在。 如果它像InAppBrowser一样工作,它是一个分支,每次调用open()都会打开一个新的浏览器视...... 展开详请

如何从Startup中配置的容器中解析类库中的依赖项?

fly_with_heartPHP Coder.
这是一个掩盖XY问题背后的设计问题。 你已经击落了明确的依赖原则 方法和类应明确要求(通常通过方法参数或构造函数参数)所需的任何协作对象才能正常运行。 public class Task { private readonly IPrinter printer; ...... 展开详请

所属标签

扫码关注云+社区