Electron中的错误消息和控制台日志?

Ozt*_*aco 7 javascript debugging node.js electron

如何在开发过程中查看Electron中的错误消息和控制台日志?此外,是否可以将日志直接写入文件?


编辑:有点像Chrome的开发工具显示的错误和控制台日志: Chrome的开发工具的屏幕截图 除了电子而不是Chrome.

Sha*_*ski 12

在您的BrowserWindow上调用该函数,openDevTools()这将打开您在Chrome中找到的相同开发工具.我在我的博客http://www.mylifeforthecode.com/debugging-renderer-process-in-electron/上写了这篇文章.

这是一个包含openDevTools的简单main.js文件:

var app = require('app');
var BrowserWindow = require('browser-window');

var mainWindow = null;

app.on('window-all-closed', function() {
  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;
  });  
});
Run Code Online (Sandbox Code Playgroud)

您也可以使用远程模块通过渲染器进程访问它.对于我一直在修补的应用程序,我将功能绑定toggleDevTools到F12.像这样的东西:

  var remote = require('remote');           
  document.addEventListener("keydown", function (e) {  
    if (e.keyCode === 123) { // F12
      var window = remote.getCurrentWindow();
      window.toggleDevTools();         
    }
  });
Run Code Online (Sandbox Code Playgroud)

请注意,我只在Windows中使用Electron测试了上述内容.我假设Linux和Mac版本的工作方式相同.如果您运行的是Mac或Linux,请告知我们是否不行.


bik*_*ikz 6

这有点旧了,但是对于您是否可以将渲染器日志(console.log浏览器 JavaScript 中的语句)写入文件的问题 - 是的,您可以。只需使用命令行参数运行 Electron--log-file=FILEPATH--enable-logging. (注意,FILEPATH应该是绝对文件路径,并且路径中的父目录应该存在 - 如果父目录不存在,Electron将不会为您创建父目录。)如果您像这样启动Electron,console.log浏览器中的语句将是写给FILEPATH. (在此处阅读有关这些命令行参数的更多信息)

例如,这是package.json电子应用程序的正常情况:

{
  "name": "my-app",
  "version": "1.0",
  "description": "Just an app",
  "main": "main.js",
  "scripts": {
    "start": "electron ."
  },
  "devDependencies": {
    "electron": "latest"
  }
}
Run Code Online (Sandbox Code Playgroud)

将其更改为:

{
  "name": "my-app",
  "version": "1.0",
  "description": "Just an app",
  "main": "main.js",
  "scripts": {
    "start": "electron . --log-file=C:/Users/you/Documents/myfile.txt --enable-logging"
  },
  "devDependencies": {
    "electron": "latest"
  }
}
Run Code Online (Sandbox Code Playgroud)

(修改该路径以适合您的操作系统。)现在像平常一样运行您的电子应用程序npm start,浏览器的控制台日志将保存到文件中C:/Users/you/Documents/myfile.txt

作为旁注 -如果电子通过类似或 的实用程序捆绑到 exe 中,则这将不起作用;当exe运行时,中的脚本将被忽略,因此启动电子时命令行参数将不会被传递。作为替代方案,您可以以编程方式将电子命令行参数添加到应用程序的顶部(在应用程序加载之前):electron-packagerelectron-builderstartpackage.jsonmain.js

app.commandLine.appendSwitch('log-file', logfile);
app.commandLine.appendSwitch('enable-logging');
Run Code Online (Sandbox Code Playgroud)

说明如何执行此操作的文档