1

子プロセスを実行し、その出力をコンソールに書き込むのに多くの問題があります。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 で修正されたようです

4

2 に答える 2