【问题标题】:How to capture the stdout stream of an electron application in windows?如何在 Windows 中捕获电子应用程序的标准输出流?
【发布时间】:2017-01-25 12:14:49
【问题描述】:

我有一个标准的电子应用程序(基于电子预构建),应该使用以下命令写入标准输出:(在我的项目的 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 的标准输出流。

【问题讨论】:

标签: node.js windows powershell stdout electron


【解决方案1】:

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

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

【讨论】:

  • 啊,我曾尝试在 powershell 中设置 env var - electron 没有接受这一点,但从 cmd 设置它非常有效。谢谢!
  • 未经测试,但在 PowerShell 中正常设置 $env:ELECTRON_NO_ATTACH_CONSOLE='true' 应该与 CMD 中的 set ELECTRON_NO_ATTACH_CONSOLE=true 相同。
  • 是的,我意识到 powershell 中的 set 只是 Set-Variable 的别名,这实际上不是我想要的变量。
猜你喜欢
  • 2010-10-29
  • 2012-08-09
  • 1970-01-01
  • 1970-01-01
  • 2018-12-25
  • 1970-01-01
  • 2012-09-17
  • 1970-01-01
  • 2013-01-22
相关资源
最近更新 更多