调用@react-native-firebase/remote-config的getAll()报Object.keys(this._values)错误
React Native Firebase Remote Config 报错排查解决方案
前置语法检查
原有代码存在语法错误,getConfig调用的then回调缺少闭合括号,先修正该问题再验证:
// 原错误写法 getConfig() .then(res => console.log(res) .catch(err => console.log(err.message)) // 修正后 getConfig() .then(res => console.log(res)) .catch(err => console.log(err.message))
基础安装配置排查
- 检查
@react-native-firebase/app和@react-native-firebase/remote-config依赖版本完全一致,执行以下命令校验版本:npm list @react-native-firebase/app @react-native-firebase/remote-config
版本不一致会导致原生模块调用异常,需调整为相同版本后重新安装依赖。 - iOS端执行
cd ios && pod install完成原生依赖集成,Android端确认gradle配置中已正确引入Firebase相关插件。 - 确认
google-services.json(Android)、GoogleService-Info.plist(iOS)已放入对应原生目录,Firebase核心服务初始化正常。
核心调用逻辑修复
报错undefined is not an object (evaluating 'Object.keys(this._values)')的核心原因是:调用getAll()前未完成远程配置的拉取和激活,本地配置缓存的_values属性未初始化。@react-native-firebase/remote-config要求调用get系列方法前,必须依次执行设置默认配置、拉取远程配置、激活配置三个前置步骤,不能直接调用getAll()。
修复后完整代码示例
import remoteConfig from '@react-native-firebase/remote-config'; import { useEffect } from 'react'; useEffect(() => { getConfig() .then(res => console.log(res)) .catch(err => console.log(err.message)) }, []) const getConfig = async () => { // 1. 设置本地默认配置(可选但推荐,避免拉取失败时无可用配置) await remoteConfig().setDefaults({ welcome_text: '默认欢迎语', // 此处补充你业务需要的其他默认配置键值对 }); // 2. 拉取远程配置,参数为缓存有效期(毫秒),示例3600000即1小时,默认12小时 await remoteConfig().fetch(3600000); // 3. 激活拉取到的远程配置,使其生效 await remoteConfig().activate(); // 4. 获取所有配置 const allConfig = remoteConfig().getAll(); return allConfig; }
其他验证项
- 清除应用缓存、卸载重装应用后重试,排除旧缓存数据影响。
- 确认Firebase控制台的Remote Config页面已经发布配置,未发布的配置无法正常拉取。
内容的提问来源于stack exchange,提问作者Agha Shayan
相关产品推荐
相关产品推荐

