Expo独立Android应用使用expo-screen-capture遇TypeError求助
解决Expo独立Android应用中expo-screen-capture导入报错问题
问题说明
为Expo应用实现禁止截图功能,安装expo-screen-capture模块后,在独立Android应用中导入usePreventScreenCapture时触发错误:
TypeError: Cannot read property 'expo_module_name' of undefined, js engine: hermes
解决步骤
1. 匹配模块与Expo SDK版本
expo-screen-capture版本必须和当前Expo SDK版本兼容,打开package.json检查对应关系(比如SDK 49对应expo-screen-capture@~12.4.0,SDK 50对应~13.0.4)。版本不匹配时执行:
expo install expo-screen-capture
该命令会自动安装适配当前SDK的模块版本。
2. 重新构建独立Android应用
Expo模块在独立应用中依赖原生代码支持,安装或更新模块后必须重新构建:
eas build --platform android
务必使用新构建的安装包测试,旧包不会包含最新的模块原生代码。
3. 清除缓存重启环境
缓存异常可能导致模块加载失败,执行以下操作:
- 清除Expo缓存:
expo r -c - 若本地有
android目录,清除Gradle缓存:cd android && ./gradlew clean && cd ..
4. 检查Hermes配置
确认app.json或app.config.js中Hermes配置正确:
{ "expo": { "android": { "jsEngine": "hermes" } } }
若修改过配置,需重新构建应用生效。
5. 验证导入语句
确保导入拼写无错误:
import { usePreventScreenCapture } from 'expo-screen-capture';
6. 临时切换JSC引擎(可选)
若以上方法无效,可暂时切换到JSC引擎排查是否为Hermes兼容问题:
修改app.json:
{ "expo": { "android": { "jsEngine": "jsc" } } }
重新构建测试,若问题消失,等待Expo或模块更新修复Hermes兼容性。
内容的提问来源于stack exchange,提问作者Heer Mehta
相关产品推荐
相关产品推荐

