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

Expo React Native导入usePreventScreenCapture触发NativeEventEmitter警告

解决方案
  • 确认版本兼容性
    检查package.json里expo和expo-screen-capture的版本是否匹配。Expo每个SDK版本对应固定的第三方包版本范围,版本不匹配会导致原生模块接口不兼容。比如使用Expo SDK 49时,要确保expo-screen-capture版本为~12.4.0(对应SDK49的适配版本),可通过Expo官方文档确认对应版本后,执行:

    npm install expo-screen-capture@对应版本
    # 或 yarn add expo-screen-capture@对应版本
    
  • 重新构建开发客户端(Dev Client)
    安装expo-screen-capture后必须重新生成Dev Client,否则原生模块无法正确打包进客户端,引发事件发射器方法缺失的警告:

    1. 先清除Expo缓存:
      expo r -c
      
    2. 重新构建对应平台的Dev Client:
      # iOS平台
      eas build --profile development --platform ios
      # Android平台
      eas build --profile development --platform android
      

    构建完成后,将新的Dev Client安装到设备上再运行项目。

  • 排查手动链接冲突
    如果项目之前有过手动链接原生模块的操作,可能和Expo自动链接机制冲突。检查android/settings.gradle和ios/Podfile中是否存在expo-screen-capture的手动配置,若有则删除,之后重新执行构建。

  • 临时规避方案(仅当以上方法无效时使用)
    若暂时无法调整版本或重建客户端,可在项目入口文件(如App.js)添加以下代码,手动补全NativeEventEmitter所需方法以消除警告:

    import { NativeModules } from 'react-native';
    
    const ScreenCaptureModule = NativeModules.ExpoScreenCapture;
    if (ScreenCaptureModule) {
      ScreenCaptureModule.addListener = () => {};
      ScreenCaptureModule.removeListeners = () => {};
    }
    

    注意:此方法仅为临时规避,优先推荐版本兼容和重建客户端的根本解决方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 20:16:10