feat: 支持win打包
This commit is contained in:
65
electron/server.js
Normal file
65
electron/server.js
Normal file
@@ -0,0 +1,65 @@
|
||||
const express = require('express')
|
||||
const path = require('path')
|
||||
const net = require('net')
|
||||
|
||||
const appHttp = express()
|
||||
const START_PORT = 9527
|
||||
const MAX_PORT = 9999
|
||||
|
||||
// 检查端口是否可用
|
||||
function isPortAvailable(port) {
|
||||
return new Promise((resolve) => {
|
||||
const server = net.createServer()
|
||||
server.listen(port, '127.0.0.1', () => {
|
||||
server.once('close', () => resolve(true))
|
||||
server.close()
|
||||
})
|
||||
server.on('error', () => resolve(false))
|
||||
})
|
||||
}
|
||||
|
||||
// 寻找可用端口
|
||||
async function findAvailablePort(startPort, maxPort) {
|
||||
for (let port = startPort; port <= maxPort; port++) {
|
||||
const available = await isPortAvailable(port)
|
||||
if (available) {
|
||||
return port
|
||||
}
|
||||
}
|
||||
throw new Error(`No available port found between ${startPort} and ${maxPort}`)
|
||||
}
|
||||
|
||||
// 获取 dist 目录路径
|
||||
let distPath
|
||||
if (process.env.NODE_ENV === 'development') {
|
||||
// 开发环境
|
||||
distPath = path.join(__dirname, '..', 'dist')
|
||||
} else {
|
||||
// 生产环境(打包后)
|
||||
distPath = path.join(__dirname, 'dist')
|
||||
}
|
||||
|
||||
console.log('Serving static files from:', distPath)
|
||||
|
||||
// 提供静态文件
|
||||
appHttp.use(express.static(distPath))
|
||||
|
||||
// 启动服务器
|
||||
async function startServer() {
|
||||
try {
|
||||
const PORT = await findAvailablePort(START_PORT, MAX_PORT)
|
||||
|
||||
const server = appHttp.listen(PORT, '127.0.0.1', () => {
|
||||
console.log(`✅ Local server running at http://127.0.0.1:${PORT}`)
|
||||
})
|
||||
|
||||
// 导出服务器实例和端口,以便在需要时关闭
|
||||
return { server, PORT }
|
||||
} catch (error) {
|
||||
console.error('❌ Failed to start server:', error.message)
|
||||
throw error
|
||||
}
|
||||
}
|
||||
|
||||
// 导出启动函数
|
||||
module.exports = { startServer }
|
||||
Reference in New Issue
Block a user