我收到很多发送后无法设置 header
错误,而且它们似乎从来没有在我的app.js
中给我行号,这是正常的吗?人们如何调试这些错误?
我抛出 header 错误的代码看起来像这样,它是否在做一些奇怪的事情来隐藏行号?
app.get('/', function(req, res, next) {
if (req.param('q')) {
searchProvider.search(
req.param('q'),
function( error, results) {
res.render('search', {
locals: {
results: results,
q: req.param('q')
},
});
}
);
} else {
res.render('index');
}
});
最佳答案
发送后无法设置 header
是一个常见错误,这意味着您基本上多次调用 res.render
、res.end
或 res.send
。这意味着您试图将多个 HTTP 响应写入一个 HTTP 请求(这是无效的)。
此错误的一个常见原因是在一个中间件中两次调用 next
。
也许你有一个像这样的中间件
app.all("*", function(req, res, next) {
// not logged in
if (!req.user) {
res.render("loginError");
}
// bad accidental next call!! Will call next after rendering login error
next();
});
关于node.js - 如何调试 Node.js 中的 header 发送错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7372667/