1

在发布到 URL 后Can't set headers after they are sent尝试运行SpookyJS (CasperJS 的驱动程序)脚本时出现错误。我发现了其他几篇关于人们使用 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();
});
4

1 回答 1

0

错误“错误:发送后无法设置标头。” 意味着您已经处于 Body 或 Finished 状态,并且正在尝试写入标题。

您在回调开始时拥有此res.send(req.status);权利,之后您尝试执行更多操作,这些操作试图设置标头或状态代码,但正文已被写入。所以你看到了这个错误。

您应该在最后发送响应,更重要的是尝试了解 node.js 的异步行为。

移至回调的最后一行,然后您的代码将res.send(req.status);起作用。

于 2015-03-18T05:17:08.210 回答