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

そして奇妙なことに、コマンドが を介してインストールされたときにのみENOENTに遭遇します。たとえば、システムコマンドnpm 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 に答える