我有一个python代码,我在nodejs中调用它。
python代码将在不同阶段打印一个句子。在python中每次打印后都有一个sys.stdout.flush()
。
现在我使用nodejs python shell
app.post('/', function (req, res) {
flag = req.body.flag;
options = {
mode: 'text',
args: [ '--flag='+flag]
};
pyshell = new PythonShell(myPythonScriptPath, options)
pyshell.on('message', function (message) {
resultText = `It's ${flag} degrees in ${message}!`;
res.render('index', {result: resultText, error: null});
console.log(message);
})
})
它只返回一个句子,之后出现错误:
Error: Can't set headers after they are sent
。
如果我不使用
,这工作正常resultText = `It's ${flag} degrees in ${message}!`;
res.render('index', {result: resultText, error: null});
并且只使用终端。 但它失败了一个网页。 有谁知道如何解决这个问题?
答案 0 :(得分:1)
来自社区维基' answer:
Express中的res
对象是Node.js's http.ServerResponse
(read the http.js source)的子类。您可以根据需要随时拨打res.setHeader(name, value)
,直到您拨打res.writeHead(statusCode)
。在writeHead
之后,标题会被烘焙,您只能调用res.write(data)
,最后调用res.end(data)
。
错误"错误:发送后无法设置标头。"表示您已处于正文或已完成状态,但某些函数尝试设置标题或statusCode。当您看到此错误时,尝试查找在已经写入某些正文后尝试发送标头的任何内容。例如,查找意外调用两次的回调,或发送正文后发生的任何错误。