node的child_process的execSync方法调用cmd报错

const { execSync } = require('child_process');
execSync('./node_modules/.bin/babel plugins/router-generator/src --out-dir plugins/router-generator/dist')

node执行该代码,在Mac执行没问题,但在win10执行,则报错:

'.' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
child_process.js:656
    throw err;
    ^

解决方案:

  1. 将斜杆变成反斜杆,即:
execSync('.\\node_modules\\.bin\\babel plugins/router-generator/src --out-dir plugins/router-generator/dist')

这样 cmd 就能找到路径了,但是得判断系统是否为 win32

if(process.platform === 'win32'){
	...
}
  1. 全局安装 cross-env
npm i cross-env -g

然后加上 cross-env

execSync('cross-env ./node_modules/.bin/babel plugins/router-generator/src --out-dir plugins/router-generator/dist')

这个就是需要全局安装 cross-env

如有更好的方案,欢迎留言交流

你可能感兴趣的:(NODE,nodejs,execSync,cmd)