所以我使用child_process spawn来从nodejs和python发送和接收数据。
这是我的代码
var py = spawn('python3', ['./python.py']),
var responseArray = []
py.stdin.write(JSON.stringify(sendData));
py.stdin.end();
py.stdout.on('data', function (data) {
responseArray = JSON.parse(data.toString())
});
py.stdout.on('end', function () {
console.log(responseArray)
});
所以在代码中,我展示了如果我像这样直接运行 *node project.js *,我会收到python发送给nodeJs的数据,但是如果我像这样从父文件夹 *node folder/project.js * 运行,它会立即转到stdout,显示数据为空
1条答案
按热度按时间mi7gmzs61#
child_process.spawn
默认使用与Node进程相同的当前工作目录(cwd):使用
cwd
指定从中派生进程的工作目录。如果未指定,则默认为继承当前工作目录。因此,如果您从父文件夹调用JS脚本,则CWD是该父文件夹,但
python.py
文件不在其中。如链接文档中所述,您可以使用
spawn
的第三个参数来指定选项,特别是应该使用的cwd
:...或者简单地修复Python脚本的路径: