尝试在发布到URL后运行SpookyJS(CasperJS驱动程序)脚本时出现Can't set headers after they are sent
错误。我发现了其他一些关于人们使用Express运行此问题的帖子,它与多次发送的标题和内容有关。我只是不确定这与我在这里做的有什么关系。我必须让res.send
发送请求的状态,对吧?因为如果我没有它,表格就不会发布。
我在这里做错了什么想法?
app.post('/submit', function (req, res) {
// Send callback
res.send(req.status);
var spooky = require('spooky').create({
verbose: true,
logLevel: 'debug',
userAgent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22',
pageSettings: {
loadImages: false,
loadPlugins: false
}
});
spooky.start('http://google.com', function () {
this.echo(this.getTitle());
});
// Run Spooky
spooky.run();
});
答案 0 :(得分:0)
错误“错误:发送后无法设置标题。”表示您已处于正文或已完成状态,并且有些内容正在尝试写入标题。
在回调开始时你有这个res.send(req.status);
,在此之后你正在尝试做更多的操作,这些操作试图设置一个标题或状态代码但是已经编写了body。所以你看到了这个错误。
您最后应该发送响应,更重要的是尝试理解node.js的异步行为。
将res.send(req.status);
移至最后一行回调,您的代码将会正常工作。