Files
ogame-vue-ts/server.js
coolxitech c0b405ae98 refactor(server): 动态导入open模块以优化启动性能
- 将open模块的引入方式从同步改为动态导入
- 避免在服务器启动时立即加载不必要的依赖
- 提升应用初始化速度和资源利用率
- 确保浏览器自动打开功能正常运行
- 添加错误处理以应对模块加载失败情况
2025-12-13 13:53:53 +08:00

44 lines
1.4 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
const express = require('express');
const path = require('node:path');
const os = require('node:os');
const app = express();
const HOST = '0.0.0.0';
app.set('trust proxy', true);
// 指向 Vue 构建后的 dist 目录
app.use(express.static(path.join(process.cwd(), 'dist')));
const getLocalIp = () => {
const interfaces = os.networkInterfaces();
for (let devName in interfaces) {
let face = interfaces[devName];
for (let i = 0; i < face.length; i++) {
let alias = face[i];
if (alias.family === 'IPv4' && alias.address !== '127.0.0.1' && !alias.internal) {
return alias.address;
}
}
}
return 'localhost';
}
const server = app.listen(0, HOST, async () => {
const { port } = server.address();
const url = `http://localhost:${port}`;
console.log('-----------------------------------');
console.log(`🚀 服务器已成功启动!`);
console.log(`🔗 本地地址: ${url}`);
console.log(`🌐 默认允许局域网访问http://${getLocalIp()}:${port}`);
console.log('-----------------------------------');
console.log('提示: 关闭此控制台窗口将停止服务。');
// 3. 自动打开浏览器
try {
const { default: openUrl } = await import('open');
await openUrl(url);
} catch (err) {
console.error('无法自动打开浏览器:', err);
}
});