我收到了很多Can't set headers after they are sent错误,他们似乎从来没有给我我的行号,这app.js是正常的吗?人们如何调试这些错误?
抛出标题错误的代码看起来像是这样,它是否在做一些奇怪的事情来隐藏行号?
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');
}
});
Run Code Online (Sandbox Code Playgroud)
Can't set headers after they are sent
是一个常见错误,这意味着您基本上是打电话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();
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1566 次 |
| 最近记录: |