Node.JS生成 Python 进程给出错误"JSONDecodeError( "Expecting value" , s, err.value) from None"



我正试图从node.js文件(index.js(中生成一个python进程(App.py(。

脚本index.js生成python脚本App.py,并向其传递参数params(json对象(。App.py然后读取uParams元素parameter1,并将该值作为消息发送回index.js.

然而,当我运行index.js脚本时,我得到了错误JSONDecodeError("Expecting value", s, err.value) from None

我试图用sys.argv[1]替换json.loads(sys.argv[1]),但运行它会出现错误TypeError: string indices must be integers

我是否错误地格式化了index.js中的"params"JSON对象?

你能帮我找出问题吗?

提前感谢!

index.js:


const spawn = require("child_process").spawn;
let params = {
"type":"numbers",
"lang":"js",
"uParams":[{
"parameter1":1,
"parameter2":2,
"parameter3":3
}]  
}
const pythonProcess = spawn('python',['./App.py', params]);
pythonProcess.stdout.on('data', (data)=>{
console.log(data.toString());
});

应用程序:


import sys, json
params = json.loads(sys.argv[1])
print(params['uParams'][0]['parameter1'])
sys.stdout.flush()

您必须使用JSON.stringify字符串化JSON对象。

const pythonProcess = spawn('python',['./App.py', JSON.stringify(params)]);

坦率地说,我很惊讶spawn并没有抱怨它只接受字符串参数,但它一定是在对象上调用toString,所以你只是在传递[object Object]

> ({foo:'bar'}).toString()
'[object Object]'

相关内容

最新更新