Angular 15升级后搭配Node.js 18出现代理请求超时问题求助
问题解决:Angular 15 + Node.js 18 代理请求超时(ETIMEDOUT)
核心原因
Node.js 18 调整了默认的网络/TLS 配置,同时 Angular 15 配套的 webpack-dev-server(HPM 代理)在 Node.js 18 环境下的默认行为与 Node.js 16 存在差异,导致原代理配置无法正常建立连接。
解决方案
1. 调整代理配置,增加超时与TLS兼容参数
修改你的src/proxy.conf.json,补充以下配置:
{ "/api": { "target": "[backend_server]", "secure": true, "changeOrigin": true, "timeout": 60000, "tls": { "minVersion": "TLSv1.2" } } }
timeout:延长代理请求的超时时间,避免因 Node.js 18 默认超时阈值更短导致连接中断tls.minVersion:强制使用 TLS 1.2 协议,适配部分后端服务的 TLS 版本要求(Node.js 18 默认启用了更高版本的 TLS,部分旧后端服务不兼容)
2. 适配自签名证书场景(仅开发环境)
如果后端使用自签名证书,Node.js 18 对证书验证更严格,可临时添加以下配置(生产环境禁止使用):
{ "/api": { "target": "[backend_server]", "secure": false, "changeOrigin": true, "timeout": 60000, "rejectUnauthorized": false } }
3. 升级Angular开发工具依赖
将@angular-devkit/build-angular升级到 Angular 15.x 的最新小版本,该版本修复了与 Node.js 18 的兼容性问题:
npm install @angular-devkit/build-angular@^15.2.0 --save-dev
4. 验证基础网络连通性
先确认开发机器能直接访问后端服务,排除网络本身的问题:
curl [backend_server]/api/physicians/
如果直接访问也超时,需要排查防火墙、VPN 或后端服务状态。
为什么回退Node.js 16能解决?
Node.js 16 的默认 TLS 版本、超时配置和代理相关网络行为与 Node.js 18 不同,原代理配置刚好适配 Node.js 16 的环境,而 Node.js 18 的新默认规则打破了这种兼容性。
内容的提问来源于stack exchange,提问作者Carla C
相关产品推荐
相关产品推荐

