を私はspawn
は、Windows 7上のnpm install
(続くrm -rf node_modules
を達成するために取得しようとしている。nは xの礼儀を指令します透明にインストールされたCygWin。すべてn xコマンドはコマンドラインで解決します。nodejsの卵を使用すると、「未知のオプション - 」引き起こし、「[エラー:スポーンENOENT]」エラー
私は当初exec
を使っていましたが、発生したstdout/stderr情報をキャッチしたかったので、spawn
を使用してコードを書き換えました。しかし、それはすべてを破ります。
var spawn = require("child_process").spawn,
child = spawn("rm", ["-rf", "node_modules"]);
child.stdout.on('data', function (data) { console.log(data.toString()); });
child.stderr.on('data', function (data) { console.log(data.toString()); });
child.on('error', function() { console.log(arguments); });
しかし、これを実行すると、次のエラーを生成します:
var spawn = require("child_process").spawn,
child = spawn("npm", ["install"]);
child.stdout.on('data', function (data) { console.log(data.toString()); });
child.stderr.on('data', function (data) { console.log(data.toString()); });
child.on('error', function() { console.log(arguments); });
:書き換え
rm: unknown option -- ,
Try `rm --help' for more information.
npm
コマンドは、このになった書き換え
rm
コマンドは、このになりました
しかし、これを実行すると、エラー:
{
'0': {
[Error: spawn ENOENT]
code: 'ENOENT',
errno: 'ENOENT',
syscall: 'spawn'
}
}
がどのように私は卵が、それはすべての場所でエラーを投げずにexec
を使用してうまく働いた同じコマンドを実行するのですか?そして、なぜこれはうまくいかないのですか? APIを読むとhttp://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_optionsは、これが正確にどのようにスポーンを使うべきかを示唆しているようです...
'.cmd'ファイルは[ほぼ同じものです](http://stackoverflow.com/questions/148968/windows-batch-files-bat-vs-cmd)ですが、それほどではありません。 – tadman
'spawn'が失敗したウィンドウで実際に動作する' exec( "npm install ...") 'を使うことができました。 'exec'はライブstdout/stderrデータ(AFAIK)を与えませんが。 –
いいえ私は持つことができませんでした。あなたが指摘しているように、execはstdoutとstderrの処理を持たず、ログなしでnpmをインストールするとかなり役に立たなくなります。 –