如何在网页上即时显示文字?

时间:2018-04-05 07:36:16

标签: python node.js

我有一个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});

并且只使用终端。 但它失败了一个网页。 有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

来自社区维基' answer

Express中的res对象是Node.js's http.ServerResponseread the http.js source)的子类。您可以根据需要随时拨打res.setHeader(name, value),直到您拨打res.writeHead(statusCode)。在writeHead之后,标题会被烘焙,您只能调用res.write(data),最后调用res.end(data)

错误"错误:发送后无法设置标头。"表示您已处于正文或已完成状态,但某些函数尝试设置标题或statusCode。当您看到此错误时,尝试查找在已经写入某些正文后尝试发送标头的任何内容。例如,查找意外调用两次的回调,或发送正文后发生的任何错误。