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

React Native中继承EventEmitter类失败:报错‘Super expression must either be null or a function’

解决React Native 0.68中继承EventEmitter报错的问题

这个错误我太熟悉了!你遇到的TypeError: Super expression must either be null or a function,核心原因是React Native 0.68版本已经不再将EventEmitter作为可继承的类暴露在react-native包中了——原来的导出要么是null,要么是一个无法被继承的对象,所以当你尝试用它作为父类时就会触发这个报错。

解决方案:改用Node.js的events模块

React Native完全支持Node.js核心模块中的EventEmitter,这也是官方现在推荐的JS层事件发射方案。修改你的代码如下:

// 替换原来的导入语句
import EventEmitter from 'events';

class A extends EventEmitter {
  constructor() {
    super();
  }
}

export const a = new A();

额外说明

如果你需要和原生模块的事件交互(比如监听原生发送过来的事件),那应该使用react-native包中的NativeEventEmitter,用法示例如下:

import { NativeEventEmitter, NativeModules } from 'react-native';
const { YourNativeModule } = NativeModules;

const emitter = new NativeEventEmitter(YourNativeModule);

但如果只是在JS代码内部实现事件订阅/发射的逻辑,用上面的events模块方案就完全够用了。

内容的提问来源于stack exchange,提问作者Esben von Buchwald

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 19:27:35