提问者:小点点

NodeJS子进程Python文件错误:发送到客户端后无法设置头


我对NodeJS还很陌生,所以如果我的问题的答案是显而易见的,我表示歉意。 我正在尝试将数据从python文件发送到NodeJS服务器。 诀窍是我的python文件有一个无限循环,因为它我得到了错误:不能设置头后,他们被发送到客户端。

我还没有找到让我的代码工作的方法。

下面是我的python文件:

import time
number = 1
print(number)

while True:
    
   number +=1
   print(number)
    

下面是我的节点文件:

let express = require('express');
let app = express();

app.get('/', compteur)

function compteur(req, res) {

    const spawn = require('child_process').spawn;

    const process = spawn('python', ['./hello.py']);
   
    process.stdout.on('data', data => {
        res.send(data.toString());
    });
}

app.listen(8080, function() {
    console.log('server running on port 8080');
});

对于info,我知道我在这里使用的代码是基础的,但是对于我的项目,我有一个python代码,它不断地从传感器发送数据,这就是为什么我用这个例子进行测试的原因。 我相信错误来自于一个回调函数,但我还没能修复它。

我对NodeJS还是个新手,所以如果我犯了一个基本的错误,我很抱歉。


共1个答案

匿名用户

您的python代码并不是导致问题的原因。

您试图多次响应同一个请求(您不能这样做,因为HTTP不是这样工作的>;一个请求/一个响应)。

这个

process.stdout.on('data', data => {
    res.send(data.toString());
});

每次data事件激发时都会调用。 只需存储数据并在end事件中的process.stdout.on外部发送响应。

类似于

// init data-container here

process.stdout.on('data', data => {
    // append data to data-container
});

process.stdout.on('end', () => {
    return res.send...
});