【问题标题】:Node.js calling bash script via spawn(): ENOENTNode.js 通过 spawn() 调用 bash 脚本:ENOENT
【发布时间】:2018-10-09 20:58:26
【问题描述】:

这将引发 ENOENT 错误:

const cmd = 'bash my/path/to/script.sh';
const process = spawn(cmd);
process.on('exit', (code) => {
    console.log("Child exited");
});

虽然这不会按预期执行脚本:

const cmd = 'bash my/path/to/script.sh';
exec(cmd, function(err, stdout, stderr) {
    console.log(stdout);
});

现在,我想要来自spawn() 的数据流并让它工作。这种行为可能来自哪里的任何建议?

我检查了pwd,两者的当前工作目录相同。

【问题讨论】:

    标签: javascript node.js exec child-process spawn


    【解决方案1】:

    看起来问题是 exec 将单个命令参数作为一个字符串,参数用空格分隔,但对于 spawn,您需要提供命令 (bash),然后将参数作为数组提供:

    https://nodejs.org/api/child_process.html#child_process_child_process_exec_command_options_callback

    https://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options

    试试这个:

    const process = spawn('bash', ['my/path/to/script.sh']);
    process.on('exit', (code) => {
        console.log("Child exited");
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-07
      • 1970-01-01
      • 2021-06-30
      • 2019-06-27
      相关资源
      最近更新 更多