React Native中axios实例调用报错:undefined is not an object
问题分析与解决方案
错误原因
报错TypeError: undefined is not an object (evaluating '_.apiV4.get')说明在getUserInfos函数中,apiV4变量未被正确导入,导致调用get方法时触发异常。
可行解决方案
1. 明确导入路径
将User.js中的导入语句改为直接指向index.js文件,避免模块解析时的歧义:
// User.js import { apiV4 } from "./index"; // 替换原有的 import { apiV4 } from ".";
React Native的Metro打包器在解析./时虽默认查找目录下的index.js,但部分场景下会出现解析异常,明确指定文件名可规避这类问题。
2. 排查循环依赖
检查是否存在循环导入情况:比如index.js是否间接导入了User.js或UserMapper.js中的内容,导致模块加载时apiV4还未完成初始化就被引用。
- 若存在循环依赖,重构代码结构,将共用的工具/映射器移到独立文件,避免模块间互相引用。
3. 重置Metro缓存
React Native的缓存可能导致模块导出未被正确更新,运行以下命令重置缓存后重新打包:
npx react-native start --reset-cache
之后重新启动iOS/Android项目。
4. 验证axios实例创建
在index.js中添加日志,确认apiV4实例是否成功创建:
// index.js export const apiV4 = axios.create(options); console.log("apiV4 instance created:", apiV4); // 添加日志
启动项目后查看控制台输出,若apiV4为undefined,则检查Config.BASE_URL是否正确加载(可临时替换为固定URL测试),或axios的导入是否正常。
补充说明
你的React Native版本(0.63.4)属于较旧版本,Metro的模块解析逻辑可能和新版本有差异,优先尝试明确导入路径和重置缓存,这是此类问题最常见的解决手段。
内容的提问来源于stack exchange,提问作者Joao Victor Simonassi Farias
相关产品推荐
相关产品推荐

