防止 express 中的默认响应

preventing default response in express

app.use(express.static("public"));

app.post("/api/",(req, res) => {

  const pyshell = new PythonShell("current.py");

  pyshell.on("message", function (message) {
    return res.json({result: message})
  });

  pyshell.end(function (err) {
    if (err) {
     console.log(err)
    }
  });
// here it sends responses automatically
});

app.listen(3000);

每当我 运行 此代码时,我都会收到 Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client 错误。 pyshell.on() 是一个事件,我只想在那里发送响应。那么,如何防止发送默认/自动响应?我是节点和表达的初学者。

肯定是因为pyshellreturns多条消息

因此在下一个代码中,消息存储在一个数组中。

当 pyshell 完成时,数组被发送。

app.post("/api/",(req, res) => {

  const pyshell = new PythonShell("current.py");
  let messages = []

  pyshell.on("message", function (message) {
    messages.push(message)
  });

  pyshell.end(function (err) {
    if (err) {
     console.log(err)
    } else {
      res.json({result: messages})
    }
  });
// here it sends responses automatically
});