0
我試圖執行通過節點的spawn()
像一個批處理腳本什麼如下所示:節點child_process:嵌套的批處理文件
const spawn = require('child_process').spawn;
const script = require.resolve('./script_1.bat');
const bat = spawn(script);
/* program runs properly (for the most part) */
bat.stderr.on('data', (data) => {
console.log('stdErr: ' + data);
});
bat.on('exit', (code) => {
console.log('Child exited with code' + code);
});
的問題是,script_1.bat
在同一目錄call
命令script_2.bat
:
`call script_2.bat`
當我在命令行中執行script_1.bat
時,它工作正常。然而,當我從節點運行script_1.bat
,我看到這個控制檯:
stdErr: 'script_2.bat' is not recognized as an internal or external command, operable program or batch file.
我已經做了我最好通過該節點的子進程文檔挖,但我找不到爲什麼會發生這種事的explination。有沒有辦法將嵌套批處理文件傳入spawn()
方法?
謝謝你的時間。
我不習慣去渣,但你的錯誤信息告訴你,CMD找不到文件** ** script_2.bat。嘗試在調用之前放置** cd&pause **命令,以查看** script_1.bat **是否與** script_2.bat **相同。 – elzooilogico
@elizooilogico這是文件路徑的問題。我更新了'script_1.bat'來引用'script_2.bat'的絕對路徑,並且它在節點中工作。如果你可以把它放到一個答案中,我會接受 – Mac
似乎是一個問題,其中java代碼以自己的路徑開始,所以不引用顯式路徑,使默認的java路徑成爲calles的起點。很高興知道你解決了它,並感謝您的反饋。 – elzooilogico