首页 > 解决方案 > 无法从使用 python 的 nodejs 应用程序中的函数返回 json?

问题描述

我认为正在发生一些我无法弄清楚的异步事情async-await如果可能的话,请告诉我如何解决这个问题。

我的代码:

const {spawn} = require('child_process')


const getWeatherReport = (location) => {
    let dataToSend, result
    const python = spawn('python', [__dirname+'\\weathergetter.py', location.toString()])

    python.stdout.on('data', (data) => {
        console.log('Pipe data from python script ...');
        dataToSend = JSON.parse(data.toString().replace(/\'/g, '\"'));
        // console.log(dataToSend)
    })
    
    python.stderr.on('data', data => {
        console.error(`stderr: ${data}`)
    })
  
    python.on('close', (code) => {
        console.log(`child process close all stdio with code ${code}`);
        // console.log(dataToSend)
    })
    return dataToSend
    
}

var wea = getWeatherReport("kolkata")
console.log(wea)

输出: 来自python脚本的
未定义管道数据...... 子进程关闭所有带有代码0的stdio


我希望函数返回json object分配给dataToSend. 在这里,我实际上正在使用 python 脚本。

python脚本没有问题。当我console.log(dataToSend)进入python.stdout.on()并在代码python.on()注释掉时,json 对象被打印到控制台。但我不能让函数返回 json 对象

请参阅这些以了解我所关注的内容:

标签: javascriptpythonnode.jschild-process

解决方案


推荐阅读