更新Node.js后React项目HPM代理证书报错或不跳转如何解决?
解决方案
根因说明
Node.js 17+版本强化了TLS证书校验逻辑,同时webpack-dev-server依赖的http-proxy-middleware v2+版本调整了secure参数的处理规则,才会出现你遇到的两种异常:关闭secure: false触发证书校验报错,开启后代理规则不生效。
解决步骤
- 新增自定义HTTPS Agent配置
原secure: false参数在高版本依赖中无法生效,需要手动创建忽略证书校验的HTTPS Agent,修改你的devServer配置如下:const https = require('https'); devServer: { contentBase: './dist', hot: true, proxy: { '/api': { target: 'https://localhost:8443/test', pathRewrite: { '^/api': '' }, secure: false, changeOrigin: true, // 新增以下配置 agent: new https.Agent({ rejectUnauthorized: false }), headers: { "Connection": "keep-alive" }, } } } - 校验请求路径匹配规则
确保业务代码中发起的请求前缀为/api,只有匹配该前缀的请求才会触发代理规则,例如需要请求https://localhost:8443/test/list时,业务代码应写为/api/list。 - 配置Node.js全局TLS校验参数(仅本地开发使用)
若上述配置仍未生效,修改项目启动命令,临时关闭Node.js全局TLS证书校验:- Mac/Linux系统:
NODE_TLS_REJECT_UNAUTHORIZED=0 npm run start - Windows CMD:
set NODE_TLS_REJECT_UNAUTHORIZED=0 && npm run start - Windows PowerShell:
$env:NODE_TLS_REJECT_UNAUTHORIZED=0; npm run start
- Mac/Linux系统:
- 降级依赖版本
若问题依然存在,可将http-proxy-middleware降级到v1.x适配老配置规则:npm install http-proxy-middleware@1.3.1 --save-dev
内容的提问来源于stack exchange,提问作者BilalMr
相关产品推荐
相关产品推荐

