React项目调用signup接口报Cannot POST /undefined/signup错误求助
问题根因
Cannot POST /undefined/signup 报错的直接原因是代码中拼接请求地址的API变量取值为undefined,导致最终请求地址异常。
排查修复步骤
- 修正变量声明顺序
你当前代码中API变量用const声明在signup函数之后,const不存在变量提升,函数执行时会读取不到后续声明的变量,直接取值为undefined。把API的声明移到signup函数之前即可。 - 检查环境变量配置
React要求自定义环境变量必须以REACT_APP_为前缀,你需要在项目根目录的.env文件中添加如下配置:
注意地址结尾不要加多余的REACT_APP_API_URL=你的后端服务地址前缀(例如http://localhost:8080)/,避免拼接后出现//signup的异常路径。 - 重启开发服务
修改.env文件后必须重启React本地开发服务,新的环境变量才会生效,热重载不会自动加载.env的修改内容。 - 验证变量取值
可以在fetch调用前添加日志打印验证取值:console.log(API),确认输出的地址和你Postman请求的地址前缀一致。
修正后参考代码
const API = process.env.REACT_APP_API_URL; export const signup = user => { return fetch(`${API}/signup`, { method: 'POST', headers: { Accept: 'application/json', 'Content-Type': 'application/json' }, body: JSON.stringify(user) }) .then(response => { return response.json(); }) .catch(err => { console.log(err); }); };
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

