使用node.js spawn时如何获取更具体的错误消息?

时间:2017-07-20 13:41:28

标签: javascript node.js

现在我有以下代码在node.js中生成一个python脚本:

  logger.info('Spawning python process');
    let proc1 = spawn('python3',
      ['experimental/paraphrase/paraphrase_detect.py',
        results[0].answer, request.query.response]);

    proc1.stdout.on('data', (data) => {
      logger.info('Python script returned data');
      let retVal;
      if (data) {
        logger.info(data.toString());
        retVal = JSON.parse(data.toString());
      }

      return response.json({data: retVal});
    });

    proc1.on('close', (code, test) => {
      if (code === 1) {
        const msg = 'Python exited with exit code 1 meaning there was a ' +
            'problem executing the script.';
        logger.error(msg);
        logger.error(test);
      }
    });

    proc1.on('error', (data) => {
      logger.error('Error with calling python script');
      if (data) {
        logger.error(data.toString());
      }
    });

我正在处理的问题是没有将特定的错误消息返回给节点,例如权限问题,脚本名称拼写错误或缺少python包。我能够做到的最好的事情是捕获退出代码1,这通常表明运行脚本时出现问题。

1 个答案:

答案 0 :(得分:0)

尝试proc1.stderr.on(“data”)

更多细节。 https://nodejs.org/api/child_process.html#child_process_child_process