我搜索了很多,但沒有得到正確的答案。產生子進程在nodejs中調用npm-installed命令導致窗口中ENOENT
首先,我敢肯定,該命令是命令行下使用,這裏是輸出:
> lessc
lessc: no input files
usage: lessc [option option=parameter ...] <source> [destination]
然而,當使用child_process.spawn
,我得到:
> node test.js
Encountered error: { [Error: spawn ENOENT] code: 'ENOENT', errno: 'ENOENT', syscall: 'spawn' }
我敢肯定,process.env
給予spawn
,這裏是代碼的NodeJS:
var build = require('child_process').spawn(
'lessc',
[],
{
stdio: 'inherit',
env: process.env
}
);
build.on(
'error',
function (err) {
console.log('Encountered error:', err);
process.exit();
}
);
build.on(
'close',
function (err) {
console.log('close');
}
);
而且weiredly,只遇到ENOENT當通過npm install -g
安裝命令,它運作良好,在例如dir
或del
系統命令
它適用於我在Linux上,將盡快在Windows上測試。同時,我建議你檢查你的PATH:是否可能是'cmd'窗口設置了一個路徑(比如你正在運行的'.bat'文件),這對於衍生進程是不存在的?另外,'dir'和'del'是內部的'cmd'命令,所以「不計數」(它們工作的事實)。嘗試運行一個外部'.exe'來查看它是否工作。最後,你不需要指定'env:process.env',這是默認的。 –