做一个小工具时,用到了node的child_process,因为要和子进程保持通信,所以我选用了spawn方法。写法如下:
const { spawn } = require('child_process');
spawn('./node_modules/.bin/my-webpack-dev-server.cmd', [],{cwd:'./projects/01'})
结果程序华丽丽地报错了:
'.' 不是内部或外部命令
明明直接在windows的命令行工具里,这行代码是可以运行的啊,为什么到了node里报错了呢。
经过尝试,发现换这种写法就可以了:
const { spawn } = require('child_process');
spawn('.\\node_modules\\.bin\\my-webpack-dev-server.cmd', [],{cwd:'./projects/01'})
看来关于文件路径,node里执行时还是比较严格的,不像cmd里会帮助我们做很多转义的操作,所以写法上要更加严谨。