Ozt*_*aco 7 javascript debugging node.js electron
如何在开发过程中查看Electron中的错误消息和控制台日志?此外,是否可以将日志直接写入文件?
编辑:有点像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,请告知我们是否不行.
这有点旧了,但是对于您是否可以将渲染器日志(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)
| 归档时间: |
|
| 查看次数: |
8963 次 |
| 最近记录: |