如何调试Node.js中发送的头错误
我收到很多如何调试Node.js中发送的头错误,node.js,header,Node.js,Header,我收到很多发送后无法设置标题的错误,而且他们似乎从未在我的app.js中给我行号,这正常吗?人们如何调试这些错误 我抛出headers错误的代码看起来是这样的,隐藏行号是不是有点奇怪 app.get('/', function(req, res, next) { if (req.param('q')) { searchProvider.search( req.param('q'), function( error, resu
发送后无法设置标题的错误,而且他们似乎从未在我的app.js中给我行号,这正常吗?人们如何调试这些错误
我抛出headers错误的代码看起来是这样的,隐藏行号是不是有点奇怪
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');
}
});
发送后无法设置标题
是一个常见错误,这意味着您基本上多次调用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();
});
您可能在写入标题后调用res.send。我是否应该调用某个函数而不是next()
?像return
?@BenHumphreyo要么return res.render(…)
要么否则{next()}
会解决这个问题