做一個小工具時,用到了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裏會幫助我們做很多轉義的操作,所以寫法上要更加嚴謹。