快递& Casper:发送后无法设置标头

时间:2015-03-17 22:48:50

标签: javascript express phantomjs casperjs spookyjs

尝试在发布到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();
});

1 个答案:

答案 0 :(得分:0)

错误“错误:发送后无法设置标题。”表示您已处于正文或已完成状态,并且有些内容正在尝试写入标题。

在回调开始时你有这个res.send(req.status);,在此之后你正在尝试做更多的操作,这些操作试图设置一个标题或状态代码但是已经编写了body。所以你看到了这个错误。

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

res.send(req.status);移至最后一行回调,您的代码将会正常工作。