2012-03-23 5 views
2

出力フォームをWindowsのnode.jsスクリプトにリダイレクトしようとすると、私は奇妙な動作に気付きました。 PowerShellのからノードconsole.logの動作とウィンドウstdout

c:\> node -e console.log('hello') 
hello 

言うことです
PS C:\> node -e console.log('hello') 
PS C:\> 

が、それはせずに終了し、Windowsのコンソール(CMD.EXE)から

:次のように、この動作の最小の再現性の例です。コンソールに何かを書く。

私は、出力をファイルにリダイレクトしようとすると、何も書かれていないので、これは問題であり、例えば

node -e console.log(123) > temp.txt 

はTEMP.TXTという名前の空のファイルを作成しています。

nodeがconsole.outをstdioに書き込む方法については何かありますか?

答えて

3

括弧内にあるようです。

これを試してみてください:

リダイレクト用として
node -e "console.log('hello')" 

は、私見、これは動作しない理由NE理由があります。それをOut-File temp.txtにパイプしてみてください。

+0

ah - コマンドラインから実行した例(感謝!)に役立ちますが、 "node script.js> log.txt"などのスクリプトファイルから出力をリダイレクトするときに空のファイルが残っています。これはPowershellの空白ですが、cmd.exeの予想通りです。何か案は? –

+0

あなたは 'Out-File'を試しましたか(今私の答えを見てください)? – stej

+0

私はこれを答えとして受け入れています。なぜなら、別のマシンでうまく機能していたからです。私はそれが私の元のマシンで動作することは決してできなかったので、私は別の奇妙なことが起こっていると思う。ありがとう! –

0

PowerShellからの呼び出し時に、「ノード」への呼び出しを「点け」ますか?

.\node -e "console.log('hello')" >test2.txt 

これは私に役立ちます。

0

私は同じ問題を抱えていましたが、私の頭を壁にぶつけた後、64ビットマシンから32ビットノードをアンインストールし、64ビットノードをインストールしました。今度はPowershellスクリプトでNodeの出力を取得します。 再インストール、または64ビット対32ビットで修正されたかどうかは分かりません。