You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行应用时触发NativeEventEmitter警告,请求技术解决方案

解决new NativeEventEmitter()缺少addListener/removeListeners方法的警告

情况1:第三方依赖包导致的警告

  • 优先升级对应依赖到最新稳定版本,很多旧版本的React Native库未适配最新的EventEmitter规范,升级后通常能解决问题。
  • 若没有可用更新或升级后仍存在警告,可在metro.config.js中过滤该警告:
    module.exports = {
      // 保留原有配置
      logger: {
        warn: (message) => {
          // 过滤目标警告
          if (!message.includes('new NativeEventEmitter() was called with a non-null argument without the required')) {
            console.warn(message);
          }
        },
      },
    };
    

情况2:自定义原生模块导致的警告

如果是你自己开发的原生模块,需要在两端实现对应方法:

  • iOS端(Objective-C):
    #import <React/RCTBridgeModule.h>
    
    @interface YourCustomModule : NSObject <RCTBridgeModule>
    @end
    
    @implementation YourCustomModule
    
    // 实现addListener和removeListeners方法
    - (void)addListener:(NSString *)eventName {
        // 可根据需求维护监听计数,比如用于后续清理
    }
    
    - (void)removeListeners:(NSInteger)count {
        // 实现移除监听的逻辑,比如减少计数并在计数为0时停止事件发送
    }
    
    // 其他模块实现代码
    @end
    
  • Android端(Java):
    import com.facebook.react.bridge.ReactContextBaseJavaModule;
    import com.facebook.react.bridge.ReactApplicationContext;
    
    public class YourCustomModule extends ReactContextBaseJavaModule {
        public YourCustomModule(ReactApplicationContext reactContext) {
            super(reactContext);
        }
    
        @Override
        public String getName() {
            return "YourCustomModule";
        }
    
        // 实现addListener和removeListeners方法
        @Override
        public void addListener(String eventName) {
            // 添加监听逻辑
        }
    
        @Override
        public void removeListeners(int count) {
            // 移除监听逻辑
        }
    }
    

警告原因

React Native要求NativeEventEmitter的参数(原生模块实例)必须实现addListener和removeListeners方法,用于管理事件监听的生命周期,防止内存泄漏。旧版库或自定义模块未实现这些方法时就会触发该警告。

内容的提问来源于stack exchange,提问作者Mathews Edward

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 17:13:25