3

我搜索了很多,但没有得到正确的答案。

首先,我确定该命令在命令行下可用,这是输出:

> 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');
    }
);

而且奇怪的是,它仅在通过安装命令时遇到ENOENTnpm install -g,它适用于例如dirdel系统命令

4

1 回答 1

3

事实证明,以下工作:

var spawn = require('child_process').spawn;

var b = spawn(
    process.env.comspec,
    ['/c', 'lessc'],
    { stdio: 'inherit' }
);

注意不需要env像你一样显式传递,默认是继承。

于 2013-10-17T08:14:51.463 回答