1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- // main.js (ESM 版本)
- import { app, BrowserWindow, Menu, ipcMain } from 'electron';
- import { fileURLToPath } from 'url';
- import { dirname, join } from 'path';
- import { writeLog } from './src/log/log-writer.js';
- // -------------- 构造 ESM 版 __dirname --------------
- const __filename = fileURLToPath(import.meta.url);
- const __dirname = dirname(__filename);
- // -------------- 创建窗口 --------------
- function createWindow() {
- const isMac = process.platform === 'darwin';
- const win = new BrowserWindow({
- show: false,
- frame: !isMac,
- titleBarStyle: isMac ? 'hiddenInset' : 'default',
- webPreferences: {
- nodeIntegration: true,
- contextIsolation: false,
- },
- });
- // 去掉应用菜单栏
- Menu.setApplicationMenu(null);
- if (!isMac) win.removeMenu();
- win.maximize();
- // 加载外置 H5 页面
- win.loadFile(join(process.cwd(), 'h5/index.html'));
- win.once('ready-to-show', () => win.show());
- //渲染进程死了,纪录日志
- win.webContents.on('render-process-gone', (event, details) => {
- writeLog('error',`渲染进程崩溃 ${details}`);
- // writeLog('error', JSON.stringify(details));
- });
- }
- // -------------- 应用生命周期 --------------
- app.whenReady().then(createWindow);
- app.on('window-all-closed', () => {
- if (process.platform !== 'darwin') app.quit();
- });
- app.on('activate', () => {
- if (BrowserWindow.getAllWindows().length === 0) createWindow();
- });
- // -------------- IPC --------------
- ipcMain.handle('write-log', async (_, level, msg) => {
- writeLog(level, msg);
- });
|