我有一个标准的电子应用程序(基于电子预建)应该使用以下命令写入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的标准输出流。
答案 0 :(得分:2)
如果您运行.\App.exe > log.txt
并且您可以在控制台中看到输出字符串,则意味着该字符串不会首先写入STDOUT(PowerShell术语中的成功输出流)。
显然,Electron开发人员决定将stdout
直接附加到控制台而不是实际的STDOUT(请参阅issue #4552)。如果我理解正确的讨论,您可以设置environment variable ELECTRON_NO_ATTACH_CONSOLE
以避免此行为。