当自定义bash脚本回显某些内容时,child_process生成的数据事件未触发

问题描述 投票:0回答:1

我一直在尝试使用我的节点应用程序中的child_process生成模块调用自定义bash脚本,我想捕获shell脚本回显的stdout。我曾尝试收听“数据”事件,但没有任何帮助。这是代码:在此处输入代码

const { spawn } = require('child_process');

const subprocess = spawn('.\\start_recording.sh', [], {shell:true});

subprocess.stdout.on('data', (data) => {
  data = data.toString();
  console.log(`Received chunk ${data}`);
});

我什至尝试使用:

subprocess.stderr.pipe(process.stderr, {end: false});
subprocess.stdout.pipe(process.stdout, {end: false});

仍然没有监听“数据”事件。

这是我的bash脚本start_recording.sh

#!/bin/bash
echo something
node.js child-process spawn
1个回答
0
投票

根据nodejs文档,child_process是异步的,因此请尝试将其包装在async函数中。https://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options

尝试一下:

async ()=>{
    let spawExample = await subprocess.stdout.on('data', (data) => {
      data = data.toString();
      console.log(`Received chunk ${data}`);
      return data
    });

}
© www.soinside.com 2019 - 2024. All rights reserved.