Electron vite 运行后加载ip地址而不是localhost地址

240 阅读1分钟

项目启动的时候默认会输出服务地址

但是却没有找到方法直接获取Network

dev server running for the electron renderer process at:

  ➜  Local:   http://localhost:5606/Network: http://192.168.1.72:5606/

start electron app...

electron.vite.config.mjs

plugins: [
  vue(),
  AutoImport({
    resolvers: [ElementPlusResolver()]
  }),
  Components({
    resolvers: [ElementPlusResolver()]
  }),
  {
    name: 'vite-plugin-electron-network-url',
    configureServer(server) {
      server.httpServer?.on('listening', () => {
        const address = server.httpServer?.address()
        const localIP = getLocalIPv4()
        const networkURL = `http://${localIP}:${address.port}`
        console.log('vite Network URL:', networkURL)
        // 将 Network URL 传递给 Electron 主进程
        process.env.ELECTRON_NETWORK_URL = networkURL
      })
    }
  }
],


// 获取本机 IPv4 地址
function getLocalIPv4() {
  const interfaces = os.networkInterfaces()
  for (const devName of Object.keys(interfaces)) {
    const iface = interfaces[devName]
    for (const addr of iface) {
      if (addr.family === 'IPv4' && !addr.internal) {
        return addr.address
      }
    }
  }
  return 'localhost' // 如果找不到,使用 localhost
}

main/index.js

if (is.dev && process.env['ELECTRON_NETWORK_URL']) {
  // console.log("🚢 ~ 当前打印的内容 ~ process.env:", process.env);
  const networkURL = process.env.ELECTRON_NETWORK_URL
  console.log("🚢 ~ 当前打印的内容 ~ networkURL:", networkURL);
  // 开发模式下加载远程 URL
  mainWindow.loadURL(process.env['ELECTRON_NETWORK_URL'])
}

大佬们有更简单的方法也可以说一下