React Native proxy配置是否与原生React不同?本地API请求无响应如何解决
问题原因说明
package.json 根目录下的 proxy 配置是 Create React App(CRA)针对 Web 应用提供的专属能力,React Native 本身不支持该配置,因此你的写法无法生效。
你当前用相对路径 /colours 发起请求时,会默认拼接当前应用运行的域名端口,也就是 React Native 开发服务端口 http://localhost:19006,该路径不存在后端接口,开发服务就返回了默认的应用入口HTML,所以你会拿到带刷新按钮的响应内容,请求根本没有发到5000端口的API服务上。
解决方案
- 直接使用完整接口地址发起请求。不要用相对路径,把请求地址替换为
http://<你的开发机局域网IP>:5000/colours,注意不要写localhost,如果用真机调试,手机端的localhost指向设备本身,无法访问到开发电脑上的API服务,需要换成开发电脑在同一局域网下的IP地址(比如192.168.3.12这类格式)。示例写法:
fetch("http://192.168.3.12:5000/colours", { method: "GET", headers: { "Content-Type": "application/json;charset=utf-8", } })
- 配置全局接口前缀避免重复写地址。你可以单独封装一个配置文件,根据运行环境设置不同的基础地址,比如:
// config/api.js const API_BASE_URL = __DEV__ ? 'http://192.168.3.12:5000' : 'https://你的线上接口域名' export default API_BASE_URL
发起请求时拼接前缀即可:fetch(${API_BASE_URL}/colours, ...),后续切换环境只需要修改一处配置即可。
- 如果你是通过 Expo Web 等方式在浏览器端运行 React Native 应用,需要在对应打包工具的配置文件里添加代理规则,比如用Vite就配置
vite.config.js里的server.proxy,用Webpack就配置devServer.proxy,package.json 根目录的proxy仅CRA的Web构建流程识别,其他打包工具不生效。
内容的提问来源于stack exchange,提问作者reichenwald
相关产品推荐
相关产品推荐

