React Native Firebase Auth手机号登录NativeEventEmitter警告解决方案
React Native Firebase手机号登录NativeEventEmitter警告修复方案
该警告本质是React Native 0.65+版本收紧了NativeEventEmitter的接口校验规则,旧版React Native Firebase模块未适配新接口要求,手动修改node_modules补全方法的方案对自动链接的Firebase模块无效——重新安装依赖、编译时缓存覆盖都会导致修改失效。
按以下步骤操作即可解决:
- 首先校验依赖包名正确性:官方维护的React Native Firebase包作用域为
@react-native-firebase,非@firebase-react-native,包名安装错误是该问题的高频诱因。先执行命令卸载错误依赖:
安装官方正确依赖:yarn remove @firebase-react-native/app @firebase-react-native/authyarn add @react-native-firebase/app @react-native-firebase/auth - 执行全量编译缓存清理,仅执行
yarn android不会清理旧构建产物,会导致修改不生效:# 清理安卓构建缓存 cd android && ./gradlew clean && cd .. # 启动metro时重置缓存 yarn start --reset-cache - 若已安装官方正确依赖,直接将依赖升级到v14.3.0以上的稳定版本,官方从该版本开始已完成新版NativeEventEmitter接口适配:
yarn upgrade @react-native-firebase/app @react-native-firebase/auth --latest - 升级完成后若仍有警告(多为其他关联第三方依赖触发),可在项目入口文件(如
index.js)最顶部添加代码屏蔽指定警告,该操作不会影响手机号验证码发送、校验的正常逻辑:import { LogBox } from 'react-native'; LogBox.ignoreLogs([ '`new NativeEventEmitter()` was called with a non-null argument without the required `addListener` method', '`new NativeEventEmitter()` was called with a non-null argument without the required `removeListeners` method' ]);
注意:不要通过手动修改node_modules内源码的方式补全
addListener/removeListeners方法,该方式修改的内容会在依赖重新安装、构建缓存命中时失效,无法彻底解决问题。
内容的提问来源于stack exchange,提问作者Jeaf Gilbert
相关产品推荐
相关产品推荐

