我搜索了很多,但没有得到正确的答案。
首先,我确定该命令在命令行下可用,这是输出:
> 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');
}
);
奇怪的是,当通过 npm install -g
安装该命令时,它只会遇到 ENOENT,它在例如 dir
或del
系统命令
最佳答案
事实证明,以下方法有效:
var spawn = require('child_process').spawn;
var b = spawn(
process.env.comspec,
['/c', 'lessc'],
{ stdio: 'inherit' }
);
请注意,您不需要像以前那样显式传递 env
,默认是继承。
关于node.js - 在nodejs中生成子进程来调用npm安装的命令会导致Windows中的ENOENT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19417652/