You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Electron主进程使用socket-io-client连接服务端报错求助

如何在Electron主进程中使用socket.io-client连接服务端

当然可以在Electron主进程中连接socket.io服务端,出现ReferenceError: window is not defined是因为socket.io-client默认会尝试适配浏览器环境,而主进程是纯Node.js环境,没有window对象。以下是解决方法:

  • 使用正确的导入与初始化方式:在主进程中直接用Node.js模块导入逻辑,同时明确指定Node环境支持的传输方式,避免触发浏览器环境检测。示例代码:
// 主进程文件(如main.js)
const { io } = require('socket.io-client');

// 连接服务端,显式声明支持的传输方式
const socket = io('http://你的服务端地址', {
  transports: ['websocket', 'polling']
});

// 监听连接状态
socket.on('connect', () => {
  console.log('主进程已连接到socket.io服务端');
});

socket.on('disconnect', () => {
  console.log('主进程与服务端断开连接');
});
  • 问题根源说明:socket.io-client默认会优先尝试浏览器端的传输逻辑,这会触发对window对象的检测。通过指定transports参数,强制使用Node环境兼容的传输方式,就能绕开对window的依赖,不管是2.3.0版本还是最新版,这个配置都适用。

  • 额外检查点:如果更新版本后仍报错,确认是否误引入了浏览器端的打包文件(比如直接引用dist/socket.io.js而非模块入口),确保主进程代码加载的是socket.io-client的Node.js模块版本。

内容的提问来源于stack exchange,提问作者Adrien K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 06:45:37