子プロセスを実行し、その出力をコンソールに書き込むのに多くの問題があります。spawn
このエピソードでは、Windowsmklink
コマンドを実行するために使用しようとしています。エラーは、ファイルを書き込む権限がないことです。
ただし、私の問題は、エラーがまったく通知されないことです。
以下You do not have sufficient privilege to perform this operation.
がコンソールに出力されます。
mklink /D C:\some\path\to\my\intended\link C:\path\to\my\folder
しかし、これをnode.jsで実行Error: spawn ENOENT
すると、非常に役に立たないエラーメッセージが表示されるだけです。
require('child_process').spawn('mklink',
['/D', 'C:\\some\\path\\to\\my\\intended\\link',
'C:\\path\\to\\my\\folder'],
{stdio:'inherit'})
stdio:'inherit' にもかかわらず、コンソールには何も表示されません。私も次のことを試しました:
var x = require('child_process').spawn('mklink',
['/D', 'C:\\some\\path\\to\\my\\intended\\link',
'C:\\path\\to\\my\\folder'])
x.stdout.pipe(process.stdout)
x.stderr.pipe(process.stderr)
しかし、サイコロはありません。コンソール出力はまったくありません。次のコマンドでコンソール出力を取得することに注意してくださいexec
。
var x = require('child_process')
.exec('mklink /D C:\\some\\path\\to\\my\\intended\\link C:\\path\\to\\my\\folder')
x.stdout.pipe(process.stdout)
x.stderr.pipe(process.stderr)
これには、Windows mklink がどのように機能するかについての特別な知識は必要ありません。私の問題は、単に node.js を使用したエラー報告にありますspawn
。
ここで何が間違っていますか?これは node.js のバグですか?
更新: このバグはノード v0.10.29 で修正されたようです