因此,我正在使用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,显示数据为空

推荐答案

默认情况下,child_process.spawn使用与 node 进程相同的当前工作目录(CWD):

使用cwd指定从中派生进程的工作目录.如果未指定,则默认为继承当前工作目录.

因此,如果您从父文件夹调用JS脚本,您的CWD就是父文件夹,但您的python.py文件不在那里.

如链接的文档中所述,您可以使用spawn的第三个参数来指定选项,特别是应该使用的cwd:

spawn('python3', ['./python.py'], {
  cwd: './folder' // Or better: an absolute path
})

...或简单地修复您的Python脚本的路径:

spawn('python3', ['./folder/python.py'])

Node.js相关问答推荐

node 无法验证第一个证书

如何解决无法获得本地颁发者证书的问题

Mongoose-如何从父文档填充到子文档

根据我的测试,为什么在编写Varint代码方面,NodeJS要比Rust快这么多?

FindOne()返回所有值,而不是一个值

EJS ForEach循环标记

React原生Nodejs兼容性问题

TS[2339]:类型 '() => Promise<(Document & Omit) | 上不存在属性空>'

动态设置元数据,无需重复请求 NextJS 13

数据未被中间件解析

在 Node JS 中使用 url 链接而不是文件路径

postman 发送请求……永远

解决并行保存到 mongodb

bash:npm:找不到命令?

来自 Node-aws 的 Dynamo Local:所有操作都失败无法对不存在的表执行操作

Chrome 浏览器未将 if-modified-since 标头发送到服务器

已安装全局 NPM 包但未找到命令

通过 POST 请求将数据从 node.js 服务器发送到 node.js 服务器

大型项目的 NodeJS vs Play 框架

Puppeteer 等待所有图像加载然后截图