在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输出。
有关更多信息,请参阅文档。