如何在Windows中捕获电子应用程序的stdout流?

时间:2017-01-24 01:45:02

标签: node.js windows powershell stdout electron

我有一个标准的电子应用程序(基于电子预建)应该使用以下命令写入std :(在我的项目的main.js中)

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

当我从powershell启动应用程序并将输出重定向到txt文件时,我看到终端窗口中显示的字符串符合预期:

> .\App.exe > log.txt
  

stdout写测试

但是当我打开log.txt时,它是一个空白文件。我错过了什么?

编辑:澄清Ansgar Wiechers的正确答案:在Windows命令提示符下,我需要运行以下命令:

set ELECTRON_NO_ATTACH_CONSOLE=true

这导致console.log process.stdout.write被定向到windows的标准输出流。

1 个答案:

答案 0 :(得分:2)

如果您运行.\App.exe > log.txt并且您可以在控制台中看到输出字符串,则意味着该字符串不会首先写入STDOUT(PowerShell术语中的成功输出流)。

显然,Electron开发人员决定将stdout直接附加到控制台而不是实际的STDOUT(请参阅issue #4552)。如果我理解正确的讨论,您可以设置environment variable ELECTRON_NO_ATTACH_CONSOLE以避免此行为。