Node v17+版本下Vite-proxy报ECONNREFUSED错误的解决方案
解决Node v17+下Vite代理连接IPv6 localhost被拒绝的问题
你遇到的ECONNREFUSED ::1:3000错误,核心原因是Node v17及以上版本默认优先将localhost解析为IPv6地址::1,但你的后端API可能只监听了IPv4的127.0.0.1地址,导致代理无法连接。下面是几种可行的解决方法:
方法一:强制代理使用IPv4地址
直接把代理配置里的localhost替换成127.0.0.1,让Vite代理强制连接IPv4地址:
proxy: { "/api": { target: "http://127.0.0.1:3000", changeOrigin: true, } }
方法二:让后端API同时监听IPv6和IPv4
修改你的Node后端服务器代码,将监听地址设置为IPv6通配符::,这样服务器会同时处理IPv6和IPv4请求(系统支持双栈的情况下):
// 原监听代码 // app.listen(3000, '127.0.0.1', () => { ... }) // 修改后的代码 app.listen(3000, '::', () => { console.log('Server running on http://localhost:3000'); });
方法三:修改Node的DNS解析优先级
通过环境变量强制Node优先解析IPv4地址,在启动Vite时添加NODE_OPTIONS=--dns-result-order=ipv4first参数。比如在package.json的脚本中修改:
{ "scripts": { "dev": "NODE_OPTIONS=--dns-result-order=ipv4first vite" } }
内容的提问来源于stack exchange,提问作者user14131782
相关产品推荐
相关产品推荐

