2017-07-12 40 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