登录
首页 >  文章 >  常见问题

Electron报错ERR_CONNECTION_REFUSED解决方法

时间:2026-05-11 10:32:47 176浏览 收藏

当你在 Electron 应用中遇到 ERR_CONNECTION_REFUSED 错误,别急着怀疑网络——这其实是个“服务没到位”的明确信号:渲染进程试图加载的本地 HTTP 服务(如 Vite 或 Vue CLI 启动的开发服务器)根本没运行、端口对不上、绑定地址受限、被防火墙拦截,或更常见的——生产环境误用了 http 协议而非 file://。本文手把手带你从端口检测、URL 同步、服务器绑定配置、防火墙放行到环境区分逻辑,层层排查、精准修复,助你快速告别连接拒绝,让 Electron 和前端服务真正“连上话”。

Electron应用报ERR_CONNECTION_REFUSED是本地服务没启动吗?

如果您在运行 Electron 应用时遇到 ERR_CONNECTION_REFUSED 错误,通常表明渲染进程尝试加载的 HTTP 地址(如 http://localhost:3004/)所对应的本地开发服务器尚未启动、未监听指定端口,或监听地址/端口配置不匹配。该错误并非网络连通性失败,而是 TCP 连接请求被目标主机明确拒绝,核心指向服务端状态异常。以下是多种可行的排查与修复方法:

一、确认本地开发服务器是否已启动并监听正确端口

Electron 渲染进程通过 win.loadURL('http://localhost:3004/') 加载页面时,依赖外部(如 Vite、Vue CLI、Webpack Dev Server)启动的 HTTP 服务。若该服务未运行,或运行在其他端口(如 3000、8080),则必然触发连接拒绝。

1、打开终端或命令提示符,执行 netstat -ano | findstr :3004(Windows)或 lsof -i :3004(macOS/Linux)检查 3004 端口是否被占用且有监听进程。

2、若无输出,说明端口未被监听;此时需进入前端项目根目录,运行对应启动命令,例如:npm run devvite

3、启动后再次执行端口检查命令,确认 PID 存在且状态为 LISTENING。

二、验证 Electron 中加载的 URL 与实际服务地址一致

开发服务器默认端口因框架而异(Vite 默认 5173,Vue CLI 默认 8080),若硬编码为 http://localhost:3004/ 但服务实际运行在 5173,则必然失败。必须确保 Electron 主进程中的 loadURL 地址与开发服务器输出的实际访问地址完全一致。

1、查看终端中开发服务器启动后的日志,确认其实际监听地址,例如:Local: http://localhost:5173/

2、在 Electron 主进程文件(如 main.js)中,定位 win.loadURL(...) 调用位置。

3、将 URL 修改为与日志中一致的地址,例如:win.loadURL('http://localhost:5173/')

三、检查开发服务器是否绑定到所有网络接口

部分开发服务器默认仅绑定 127.0.0.1(而非 0.0.0.0),导致 Electron 在某些配置下无法访问。若服务器绑定至 127.0.0.1 且系统存在 IPv6 优先或 hosts 映射异常,可能引发拒绝响应。

1、查阅项目配置文件(如 vite.config.js、vue.config.js),确认 server.hostdevServer.host 是否设为 '0.0.0.0'

2、若未设置,添加配置项:在 vite.config.js 中加入 server: { host: '0.0.0.0' }

3、重启开发服务器,再启动 Electron 应用进行验证。

四、排查防火墙或安全软件拦截本地回环连接

极少数情况下,Windows Defender 防火墙或第三方安全工具会将本地 HTTP 服务进程(如 node.exe)识别为“不受信任应用”,阻止其接受来自 Electron(同属本地进程)的回环连接请求,表现为 ERR_CONNECTION_REFUSED。

1、以管理员身份运行 PowerShell,执行:Set-NetFirewallProfile -Profile Domain,Private,Public -Enabled False(临时关闭防火墙测试)。

2、重新运行 Electron 应用与开发服务器,观察错误是否消失。

3、若恢复正常,说明防火墙策略干扰;需在防火墙“允许应用”列表中手动添加 node.exe 及 Electron 主程序(如 electron.exe),并勾选所有网络类型。

五、验证是否误用生产模式直接加载 file:// 协议

在打包后的生产环境,Electron 应加载本地 HTML 文件(file:// 协议),而非尝试连接 http://localhost。若开发阶段调试逻辑未区分环境,导致生产构建仍调用 loadURL('http://localhost:3004/'),而此时开发服务器早已关闭,必然报错。

1、检查主进程代码中 loadURL 的调用是否包裹环境判断,例如:if (isDev) { win.loadURL('http://localhost:3004/') } else { win.loadFile('index.html') }

2、确认 isDev 变量定义正确(如基于 process.env.NODE_ENV === 'development'require('electron-is-dev'))。

3、在生产构建前,删除或注释掉所有指向 http://localhost 的硬编码 URL。

终于介绍完啦!小伙伴们,这篇关于《Electron报错ERR_CONNECTION_REFUSED解决方法》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布文章相关知识,快来关注吧!

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>