Axios调用post时报错Cannot read property 'replace' of null如何解决
报错原因说明
这个报错是axios低版本的已知bug,触发场景是运行环境中存在值为null的代理相关环境变量(HTTP_PROXY/HTTPS_PROXY/NO_PROXY),axios的http适配器读取系统代理配置时没有做空值判断,直接对null值调用了replace方法,所以抛出了该类型错误。
你换电脑后才触发问题,是因为新电脑的系统/终端环境配置了无效的空代理变量,旧电脑的代理变量要么为空、要么是有效值,不会触发这个判断逻辑。
可行解决方案
- 方案1:排查并清除无效代理环境变量
执行以下命令查看当前终端的代理配置:
如果有输出为# macOS/Linux 环境 echo $HTTP_PROXY echo $HTTPS_PROXY echo $NO_PROXY # Windows cmd 环境 echo %HTTP_PROXY% echo %HTTPS_PROXY% echo %NO_PROXY%null的变量,执行对应命令清除即可:# macOS/Linux 清除对应变量,示例 unset HTTP_PROXY # Windows cmd 清除对应变量,示例 set HTTP_PROXY= - 方案2:请求配置中显式关闭代理读取
在axios请求的配置参数中增加proxy: false,强制axios不读取系统代理配置,修改后代码如下:console.log(message) axios.post(config.EXPRESS_URL, { content: message.content, abut_code: message.abut_code, media_url: '', userID: message.userID, name: message.name }, {headers, proxy: false}) .then(() => { console.log('Message sent') }) .catch(err => { console.log(err) }) - 方案3:升级axios到最新稳定版
该空值判断问题在axios新版本中已经修复,直接升级依赖即可解决:npm install axios@latest # 或用yarn yarn add axios@latest
内容的提问来源于stack exchange,提问作者joshk132
相关产品推荐
相关产品推荐

