Android模拟器运行Expo时出现Unexpected token无堆栈报错求助
Expo Android模拟器运行报Unexpected Token错误(调试模式正常)
问题详情
在Android模拟器中运行Expo项目时出现Unexpected token报错,无有效堆栈跟踪信息。调试模式下项目运行完全正常,已排除硬盘空间不足的因素。

项目配置文件
Package.json
{ "name": "project", "version": "1.0.0", "main": "node_modules/expo/AppEntry.js", "scripts": { "start": "expo start", "android": "expo start --android", "ios": "expo start --ios", "web": "expo start --web", "eject": "expo eject" }, "dependencies": { "@expo-google-fonts/kanit": "^0.2.2", "@expo-google-fonts/oxanium": "^0.2.2", "@fortawesome/fontawesome-svg-core": "^6.1.1", "@fortawesome/free-solid-svg-icons": "^6.1.1", "@fortawesome/react-native-fontawesome": "^0.3.0", "@react-navigation/drawer": "^6.4.3", "@react-navigation/native": "^6.0.11", "@react-navigation/native-stack": "^6.7.0", "axios": "^0.27.2", "expo": "^46.0.0", "expo-status-bar": "~1.4.0", "react": "18.0.0", "react-dom": "18.0.0", "react-native": "0.69.4", "react-native-dotenv": "^3.3.1", "react-native-reanimated": "~2.9.1", "react-native-safe-area-context": "4.3.1", "react-native-screens": "~3.15.0", "react-native-svg": "12.3.0", "react-native-web": "~0.18.7", "react-native-webview": "11.23.0", "react-native-youtube-iframe": "^2.2.2" }, "devDependencies": { "@babel/core": "^7.18.6", "@babel/preset-react": "^7.18.6", "eslint": "^8.19.0", "eslint-plugin-react": "^7.30.1", "eslint-plugin-react-native": "^4.0.0" }, "private": true }
babel.config.js
module.exports = function(api) { api.cache(true); return { presets: [ 'babel-preset-expo' ], plugins: [ 'react-native-reanimated/plugin', 'module:react-native-dotenv' ] }; };
可能的报错原因及解决方向
- Babel插件顺序错误:
react-native-reanimated/plugin必须放在Babel插件数组的最后一位,当前配置中它在module:react-native-dotenv前面,会导致转译逻辑冲突。调试模式下Expo会自动修正部分配置,但正常模式下直接使用你的配置文件,引发报错。调整插件顺序后重新启动项目。 - 缓存异常:Expo的缓存可能残留了错误的转译文件,执行
expo r -c清除缓存后再启动,多数无堆栈的奇怪报错都能通过这个操作解决。 - 依赖版本不兼容:Expo 46对应React Native 0.69,部分第三方依赖可能存在版本适配问题。可以尝试临时移除非核心依赖(比如字体库、图标库),逐个恢复来排查出冲突的依赖,再更换为适配版本。
- 未转译的ES语法:调试模式下JS引擎会兼容更多未转译的新语法,但正常模式下依赖Babel完整转译。检查项目代码或第三方依赖中是否存在
babel-preset-expo未覆盖的ESNext语法,必要时添加额外的Babel插件处理。
内容的提问来源于stack exchange,提问作者Jat90
相关产品推荐
相关产品推荐

