2017-01-24 10 views
0

私は、標準の電子アプリ(電子ビルド済みのオフに基づいて)次のコマンドでアウトはstdへの書き込みされるべきである持っている:私は起動したときに(私のプロジェクトのmain.js内)ウィンドウ内の電子アプリケーションの標準出力ストリームをキャプチャするにはどうすればいいですか?

process.stdout.write('stdout write test') 

をPowerShellのからアプリやtxtファイルへの出力をリダイレクトするには、私はターミナルウィンドウに表示される文字列を参照してください期待通り:

> .\App.exe > log.txt 

標準出力の書き込みテスト

しかし、私がlog.txtを開くと、それは空のファイルです。私は何が欠けていますか?

編集は:アンスガーWiechers'正しい答えを

set ELECTRON_NO_ATTACH_CONSOLE=true 

これはconsole.logprocess.stdout.writeにつながる窓に向けられている:Windowsはコマンドプロンプトで、私は次のコマンドを実行するために必要な明確にするために、 stdoutストリーム。

+0

[コマンドを呼び出す]試みましたか?(http://stackoverflow.com/questions/35588062/getting-stdout-to-appear-on-console-with-powershell-invoke-command-and-process) – lloyd

答えて

1

を実行すると、コンソールに出力文字列が表示されます。文字列がSTDOUT(PowerShellの用語では成功出力ストリーム)に書き込まれていないことを意味します。

明らかに、電子開発者は実際のSTDOUT(issue #4552参照)の代わりにstdoutをコンソールに直接添付することに決めました。ここでの議論を正しく理解すれば、この現象を避けるためにenvironment variableELECTRON_NO_ATTACH_CONSOLEを設定することができます。

+0

ああ、私はpowershellでそのenv varを設定しようとしました - 電子はそれを拾っていないが、cmdから設定することは完全に動作します。ありがとう! –

+1

未テストですが、PowerShellで$ env:ELECTRON_NO_ATTACH_CONSOLE = 'true'を設定すると、CMDで 'set ELECTRON_NO_ATTACH_CONSOLE = true'と同じことをする必要があります。 –

+0

ええ、私は、powershellの 'set'が' Set-Variable'のエイリアスであることに気付きました。これは実際には私が望む変数ではありません。 –

関連する問題