生产环境Axios Post请求域名重复问题排查求助
问题分析与解决方案
问题原因
你的REACT_APP_SERVER_URL环境变量值为api.dino-run.site,缺少协议前缀(https://)。当axios使用这种不带协议的地址发起请求时,浏览器会将其识别为当前页面域名(dino-run.site)下的相对路径,最终拼接出https://dino-run.site/api.dino-run.site/user/register这类域名重复的错误地址。
解决方案
1. 修正环境变量值
将Netlify中的REACT_APP_SERVER_URL设置为完整的带协议地址:
https://api.dino-run.site
修改后必须重新部署前端项目——React的环境变量是在构建阶段注入的,只有重新构建才能让新的变量值生效。
2. 优化请求拼接方式(可选)
在axios初始化时配置全局baseURL,避免每次请求手动拼接地址,减少出错概率:
// 在项目入口文件或axios专属配置文件中添加 import axios from 'axios'; axios.defaults.baseURL = process.env.REACT_APP_SERVER_URL;
之后你的saga代码可简化为:
function* userInfo({ payload }) { const { userId, nickName, profileImage } = payload; console.log("REACT_APP_SERVER_URL::", process.env.REACT_APP_SERVER_URL); try { yield axios.post('/user/register', { userId, nickName, profileImage, }); } catch (err) { console.log("user saga Error exist: ", err); yield put(userInfoFailure(err)); } }
3. 验证环境变量加载
确认Netlify配置无误:
- 进入项目的
Site settings > Environment variables,检查REACT_APP_SERVER_URL的值是否为https://api.dino-run.site - 重新部署后,查看控制台打印的
REACT_APP_SERVER_URL是否为完整的带协议地址
内容的提问来源于stack exchange,提问作者henry.ki
相关产品推荐
相关产品推荐

