在以下node.js服务器代码中,由于“ABCDE”不是已定义的变量,因此在请求“/ upload”时会引发错误。令我困惑的是,服务器端控制台上打印的错误堆栈跟踪被发送回客户端,这是不安全的。
除了捕获错误之外,我该如何防止这种情况?
var express = require('express');
var app = express();
app.use(function (err, req, res, next) {
res.send(500, 'Something broke!');
});
app.post('/upload', function (req, res) {
console.log(ABCDE);
});
app.listen(3000);
答案 0 :(得分:6)
您已经在问题中找到了答案。您需要错误处理中间件(app.use
一个arity为4的函数)来处理错误。
您只需在路由器之后添加错误处理中间件 。您的示例将错误处理程序置于路由器上方。
将app.use(function (err, req, res, next))
移到代码底部或插入
app.use(app.router);
错误处理程序上方的。
Refer to the documentation for more information about error handlers.