Electron-unhandled 使用指南
1. 项目介绍
electron-unhandled
是一个由 Sindre Sorhus 创建的开源库,用于在 Electron 应用中捕获未处理的错误和Promise拒绝。这个库可以帮助开发者避免应用因未预期的错误而崩溃,通过提供自定义的日志记录功能,以及在生产环境中显示错误对话框,提醒用户应用程序遇到了问题。
2. 项目快速启动
要开始使用 electron-unhandled
,首先确保你的项目已经安装了 Electron 和此库。如果没有,可以运行以下命令来安装:
npm install --save electron
npm install --save electron-unhandled
接下来,在你的 Electron 主进程中引入并初始化 electron-unhandled
:
// main.js
import { app } from 'electron';
import unhandled from 'electron-unhandled';
unhandled({
logger: (error) => {
console.error('An unhandled error occurred:', error);
},
showDialog: true,
});
这将默认情况下记录所有未处理的错误,并在生产环境中弹出错误对话框。
3. 应用案例和最佳实践
错误报告按钮
为了提高用户体验,你可以添加一个“报告...”按钮到错误对话框,让用户能够直接反馈错误信息:
import unhandled from 'electron-unhandled';
import { openNewGitHubIssue, debugInfo } from 'electron-util';
unhandled({
reportButton: (error) => {
const userEmail = 'user@example.com'; // 获取用户的电子邮件地址
openNewGitHubIssue({
user: 'your-github-username',
repo: 'your-repo-name',
body: `\`\`\`\n${error.stack}\n\`\`\`\n\n---\n\n${debugInfo()}`,
assignees: ['assignee-username'],
labels: ['bug', 'user-report'],
email: userEmail,
});
},
});
这样,当用户点击“报告…”时,将会创建一个新的 GitHub 问题,包含了错误堆栈和系统信息,便于你进行问题排查。
开发环境与生产环境的区分
在开发环境下,可以考虑禁用错误对话框,以防止频繁打断开发流程:
if (!process.env.NODE_ENV === 'development') {
unhandled({ showDialog: true });
}
4. 典型生态项目
- electron-builder: 用于构建、打包和发布 Electron 应用的工具。
- electron-packager: 提供将Electron应用打包成各个操作系统可执行文件的功能。
- electron-redux: 在Electron的主进程和渲染进程中同步Redux状态的库。
- electron-is-dev: 判断Electron应用是否处于开发模式的小巧库,可用于控制错误对话框仅在生产环境展示。
通过结合这些生态项目,你可以构建出功能完善且健壮的 Electron 应用程序。