Expo 46升级至47并启用Hermes后Android端RTK Query报错
Expo 47 启用Hermes后Android端RTK Query调度报错
问题详情
Expo从46升级到47版本,在app.json中启用Hermes引擎后,Android端使用RTK Query执行任何调度操作时,出现文件不存在的错误。
错误日志
Error: ENOENT: no such file or directory, open 'C:\Users\kudo\01_Work\Repos\expo\expo\android\versioned-react-native\ReactAndroid\hermes-engine\.cxx\MinSizeRel\2q85j1u4\arm64-v8a\lib\InternalBytecode\InternalBytecode.js' at Object.openSync (node:fs:585:3) at Object.readFileSync (node:fs:453:35) at getCodeFrame (C:\xxx\node_modules\metro\src\Server.js:1028:18) at Server._symbolicate (C:\xxx\node_modules\metro\src\Server.js:1101:22) at runMicrotasks (<anonymous>) at processTicksAndRejections (node:internal/process/task_queues:96:5) at async Server._processRequest (C:\xxx\node_modules\metro\src\Server.js:458:7) { errno: -4058, code: 'ENOENT', path: 'C:\\Users\\kudo\\01_Work\\Repos\\expo\\expo\\android\\versioned-react-native\\ReactAndroid\\hermes-engine\\.cxx\\MinSizeRel\\2q85j1u4\\arm64-v8a\\lib\\InternalBytecode\\InternalBytecode.js' }
环境信息
expo-env-info 1.0.5 environment info: System: OS: Windows 10 10.0.19044 Binaries: Node: 16.13.2 - C:\Program Files\nodejs\node.EXE Yarn: 1.22.11 - ~\AppData\Roaming\npm\yarn.CMD npm: 8.1.2 - C:\Program Files\nodejs\npm.CMD IDEs: Android Studio: Version 2020.3.0.0 AI-203.7717.56.2031.7583922 npmPackages: expo: ^47.0.0 => 47.0.8 react: 18.1.0 => 18.1.0 react-dom: 18.1.0 => 18.1.0 react-native: 0.70.5 => 0.70.5 react-native-web: ~0.18.7 => 0.18.8 Expo Workflow: managed
解决办法
- 清理Metro缓存:执行
npx expo start --clear,或者手动删除项目根目录下的.expo和node_modules/.cache文件夹,再重启开发服务器。 - 校验Hermes配置:确认
app.json中android.hermesEnabled设为true,配置后重新启动项目。 - 升级兼容依赖:更新
@reduxjs/toolkit到最新稳定版,执行npm install @reduxjs/toolkit@latest;重新执行npm install确保所有依赖版本匹配无冲突。 - 修改Metro配置跳过符号化:在
metro.config.js中添加自定义符号化逻辑,忽略InternalBytecode.js文件:
修改后重启Metro服务器。const { getDefaultConfig } = require('expo/metro-config'); const config = getDefaultConfig(__dirname); config.symbolicator = { customizeFrame: (frame) => { if (frame.fileName?.includes('InternalBytecode.js')) { return null; } return frame; }, }; module.exports = config; - 切换WSL环境(可选):Windows系统下的路径权限问题可能引发该错误,尝试在WSL2环境中运行项目。
内容的提问来源于stack exchange,提问作者localdata01
相关产品推荐
相关产品推荐

