2017-07-12 85 views
0

在node.js中的child_process模塊中,爲什麼execSync ('node.exe --version')可以獲取該值,並且spawnSync ('node.exe', ['--version'])無法獲取該值?但childProcess.spawnSync ('D:/Program Files/nodejs/node.exe', ['--version']);可以獲得價值。在node.js中的child_process模塊​​中

+0

事實上,這是導致我的vscode **無法正常工作的問題。因爲** vscode **在許多情況下都使用'spawnSync()'函數。 – JRoger

+0

**這個問題解決了。**參見[#728](https://github.com/nodejs/help/issues/728) – JRoger

回答

0

exec使用該系統的bash,並spawn是在* nix中fork執行(CreateProcess的在WINDOWS.H中,我猜)。

+0

爲什麼'childProcess.spawnSync('D:/ Program Files/nodejs/node。 exe',['--version']);'可以得到值? – JRoger

+0

@JRoger當您使用命令「node.exe」時,系統會搜索本地工作目錄,如果沒有找到,那麼系統將從$ PATH目錄中搜索'node.exe' *轉到https:// en .wikipedia.org/wiki/PATH_(變量)獲取更多信息*。 ''bash'可以在默認情況下加載配置,例如'.bashrc',這樣系統就可以從'$ PATH'找到它。當您使用命令「D:/ Program Files/nodejs/node.exe」時,它表示完整路徑,系統不需要從$ PATH搜索。 – Lellansin

+0

Lellansin path'D:/ Program Files/nodejs /'ware在我的電腦環境變量中。 – JRoger