如何记录Electron Windows应用的「主进程发生JavaScript错误」日志
解决Electron主进程JavaScript错误(定位未正确编译的原生库)
方法1:在主进程中手动捕获并输出错误详情
在主进程入口文件(如main.js)最顶部添加全局错误捕获代码,强制打印完整错误堆栈:
// 捕获未处理的Promise拒绝 process.on('unhandledRejection', (reason, promise) => { console.error('未处理Promise拒绝:', reason); console.error('关联Promise:', promise); }); // 捕获未捕获的异常 process.on('uncaughtException', (error) => { console.error('未捕获异常:', error); console.error('异常堆栈:', error.stack); }); // 监听Electron应用级错误 const { app } = require('electron'); app.on('error', (error) => { console.error('应用错误:', error); });
重新打包或启动应用后,通过CMD运行时控制台会输出包含出错原生库的详细堆栈信息。
方法2:用Electron内置日志参数启动
在CMD中带--enable-logging参数启动应用,同时合并标准输出和错误输出到日志文件:
"C:/path/to/my/app.exe" --enable-logging > full_log.txt 2>&1
该参数会强制Electron输出所有内部调试日志,包括原生模块加载失败的具体信息。打开full_log.txt后,搜索Error、failed、module等关键词即可定位问题库。
方法3:强制重新编译原生模块
针对当前Electron环境重新编译所有原生依赖,确保产物匹配平台:
npm rebuild --target=<你的Electron版本> --arch=x64 --dist-url=https://electronjs.org/headers
替换<你的Electron版本>为实际版本号(如28.0.0),该命令会覆盖原有编译产物,生成适配当前平台的原生模块文件。
方法4:排查Electron Builder打包日志(若用Builder打包)
打包时添加--debug参数,输出完整编译过程日志:
electron-builder build --win --x64 --debug
打包日志会显示每个原生模块的编译状态,直接定位编译失败或平台不匹配的模块。
内容的提问来源于stack exchange,提问作者Sharcoux
相关产品推荐
相关产品推荐

