在Electron应用程序中使用console.log()

如何将数据或消息logging到我的Electron应用程序中的控制台?

这个真正基本的hello world默认打开开发工具,我无法使用console.log('hi') 。 有没有电子的替代品?

main.js

 var app = require('app'); var BrowserWindow = require('browser-window'); require('crash-reporter').start(); var mainWindow = null; app.on('window-all-closed', function() { // Mac OS X - close is done explicitly with Cmd + Q, not just closing windows if (process.platform != 'darwin') { app.quit(); } }); app.on('ready', function(){ mainWindow = new BrowserWindow({ width: 800, height: 600}); mainWindow.loadUrl('file://' + __dirname + '/index.html'); mainWindow.openDevTools(); mainWindow.on('closed', function(){ mainWindow = null; }); }); 

console.log工作,但它的日志取决于你是否从主进程或渲染器进程调用它。

如果您从渲染器进程(即从index.html文件中包含的JavaScript)调用它,它将被logging到开发工具窗口。

如果你从主进程调用它(即在main.js ),它的工作方式和在Node中一样 – 它会login到terminal窗口。 如果你使用electron .从terminal开始你的电子过程electron . 你可以在主程序中看到你的console.log调用。

您也可以在Windows中添加一个环境variables:

 ELECTRON_ENABLE_LOGGING=1 

这将输出控制台消息到您的terminal。

从渲染器进程内部还有另一种login到控制台的方式。 鉴于这是电子,您可以访问节点的本地模块。 这包括console模块。

 var nodeConsole = require('console'); var myConsole = new nodeConsole.Console(process.stdout, process.stderr); myConsole.log('Hello World!'); 

当这个代码从渲染器进程里面运行的时候,你会得到Hello World! 在你跑的电子从terminal。

有关console模块的更多文档,请参阅https://nodejs.org/api/console.html

还有一种可能性是使用remote.getGlobal(name)访问主进程控制台:

 const con = require('electron').remote.getGlobal('console') con.log('This will be output to the main process console.') 

添加到M.达米安的答案,这里是我如何设置它,所以我可以从任何渲染器访问主进程的控制台:

在你的主应用程序中添加:

 const electron = require('electron'); const app = electron.app; const console = require('console'); ... app.console = new console.Console(process.stdout, process.stderr); 

在任何渲染器中,你可以添加:

 const remote = require('electron').remote; const app = remote.app; ... app.console.log('This will output to the main process console.'); 

这是cscsandy5的一些补充信息,来自这里的信息的答案

 process.stdout.write('your output to command prompt console or node js ') 

这个代码很适合只输出一个简单的debugging消息到你启动电子应用程序的terminal窗口,并且是console.log的基础上构build的。

下面是一个jQuery脚本示例代码片段(基于tutorialspoint electon教程),每次按下button时都会向terminal写信(警告:您需要在输出string中添加自己的换行符)!

 let $ = require('jquery') var clicks = 0; $(function() { $('#countbtn').click(function() { //output hello <<<<<<<<<<<<<<<<<<<<<<< process.stdout.write('hello') $('#click-counter').text(++clicks); }); $('#click-counter').text(clicks); }); 
 process.stdout.write('your output to command prompt console or node js ') 

从版本1.17开始,有比console.log更快的方法:

 process.stdout.write 

这个版本更快,从1.17开始,还有一个新的启动configuration选项"outputCapture": "std" ,它将告诉debugging适配器在debugging控制台中显示stdout / stderr输出。
有关更多信息,请参阅文档。