child_process.spawn('cd ../ && pwd') 报错 ENOENT

学习child_process的过程中,有一个小demo

/**
 * @fileOverview
 * @author iNahoo
 * @since 2018/1/30.
 */

"use strict";

const {spawn,execSync} = require('child_process');
const {resolve} = require('path');
process.chdir(resolve(__dirname, '../'));

function main() {
    // execSync 可以正确执行
    console.log(execSync('cd ../ && pwd').toString());

    // spawn 不能正确执行
    const chp = spawn(`cd ../ && pwd`);
    chp.stdout.on('data', data => {
        console.log(data.toString());
    });
    chp.on('close', () => {
        resolve();
    });
}

main();

execSync执行正确打出log
spawn返回报错


/Users/user/Desktop/project/AST

events.js:182
      throw er; // Unhandled 'error' event
      ^

Error: spawn cd ../ && pwd ENOENT
    at exports._errnoException (util.js:1022:11)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:189:19)
    at onErrorNT (internal/child_process.js:366:16)
    at _combinedTickCallback (internal/process/next_tick.js:102:11)
    at process._tickCallback (internal/process/next_tick.js:161:9)
    at Function.Module.runMain (module.js:607:11)
    at startup (bootstrap_node.js:158:16)
    at bootstrap_node.js:575:3

阅读 5.9k
1 个回答

这种写法不对,spawn只能执行一条命令:spawn(command[,args])
例如:spawn("cd", ["../"])
要执行多条命令参考:https://segmentfault.com/q/10...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题