const { app, BrowserWindow, BrowserView, Tray, Menu, nativeImage, screen } = require('electron') const child_process = require('child_process'); const { exec } = child_process const { error } = require('console'); const { stdout, stderr, argv0 } = require('process'); const path = require('path') const { createPort, getRunPort } = require('./server/index') app.disableHardwareAcceleration(); app.commandLine.appendSwitch('use-angle', 'd3d9'); function createWindow (port) { const { width, height } = screen.getPrimaryDisplay().workAreaSize; const mainWindow = new BrowserWindow({ width: width, height: height,// 设置打开的窗口大小 // fullscreen: true, // simpleFullScreen: true, focusable: true, useContentSize: true, menuBarVisible : false, enableLargerThanScreen: true, autoHideMenuBar: true, icon: 'logo.png', webPreferences: { contextIsolation: false, // worldSafeExecuteJavaScript:a flse, // webSecurity: false, nodeIntegration: true, // 是否集成node.js,解决require is not defined问题 // nodeIntegrationInWorker: true, // webviewTag: true, // 解决webview无法显示问题w // enableRemoteModule: true, } }); const { setTimeout } = require('timers') createPort((port) => { setTimeout(() => { var view = new BrowserView() // new出对象 mainWindow.setBrowserView(view) // 在主窗口中设置view可用 view.setBounds({x: 0,y: 0, width: width , height: height}) // 定义view的具体样式和位置 view.setAutoResize({width: true, height: true}) view.useContentSize = true view.webContents.loadURL('http://localhost:' + port + '/html') // wiew载入的页面 }, 1000) mainWindow.on('closed', () => { console.log('mainWindow ---closed', ); closePort(port) }); }) } app.on('ready', () => { createWindow() }) app.on('window-all-closed', () => { if (process.platform !== 'darwin') { app.quit() } console.log('window-all-closed active'); }) app.on('activate', () => { app.setName('中德智慧思维芯资源库') if (BrowserWindow.getAllWindows().length === 0) { } }) // 创建函数来关闭指定端口的进程 function closePort(port) { // 使用 netstat 查找占用端口的进程 exec(`netstat -ano | findstr :${port}`, (error, stdout, stderr) => { if (error) { console.error(`exec error: ${error}`); return; } if (!stdout) { console.log(`prop ${port} not has`); return; } // 输出的最后一列是 PID const lines = stdout.trim().split('\n'); lines.forEach(line => { const parts = line.trim().split(/\s+/); const pid = parts[parts.length - 1]; console.log(`port ${port} PID is ${pid} progress has`); // 使用 taskkill 命令终止进程 exec(`taskkill /F /PID ${pid}`, (error, stdout, stderr) => { if (error) { console.error(`unstop PID: ${pid} - ${error}`); return; } console.log(`success stop PID: ${pid}`); }); }); }); }