Expo SDK 48升级至SDK50启动报错,.plugins[0]类型异常求助
问题
Expo SDK 48已废弃,我按照官方升级指南将其升级至SDK 50,执行npx expo-doctor@latest未出现报错,但运行npx expo start --clear时触发错误:node_modules\expo\AppEntry.js: .plugins[0] must be a string, object, function。已尝试删除node_modules和package-lock.json,问题仍未解决,请问若因依赖导致,该如何排查问题?
附项目package.json配置:
{ "name": "GoldNow", "version": "2.0.2", "dependencies": { "@expo/vector-icons": "^14.0.0", "@kichiyaki/react-native-barcode-generator": "^0.6.7", "@react-native-async-storage/async-storage": "1.21.0", "@react-native-community/cli": "^10.2.0", "@react-native-community/datetimepicker": "7.6.1", "@react-native-community/masked-view": "^0.1.11", "@react-native-picker/picker": "2.6.1", "@react-navigation/bottom-tabs": "^6.5.7", "@react-navigation/native": "^6.1.6", "@react-navigation/native-stack": "^6.9.12", "@react-navigation/stack": "^6.3.16", "axios": "^1.4.0", "deprecated-react-native-prop-types": "^4.0.0", "expo": "~50.0.5", "expo-asset": "~9.0.2", "expo-dev-client": "~3.3.8", "expo-document-picker": "~11.10.1", "expo-file-system": "~16.0.5", "expo-font": "~11.10.2", "expo-image-picker": "~14.7.1", "expo-linear-gradient": "~12.7.1", "expo-splash-screen": "~0.26.4", "expo-status-bar": "~1.11.1", "install": "^0.13.0", "moment": "^2.29.4", "patch-package": "^6.5.1", "prop-types": "^15.8.1", "react": "18.2.0", "react-native": "0.73.2", "react-native-chart-kit": "^6.12.0", "react-native-cli": "^2.0.1", "react-native-countdown": "^0.0.3", "react-native-countdown-component": "^2.7.1", "react-native-countdown-timer-hooks": "^1.0.3", "react-native-dropdown-picker": "^5.4.6", "react-native-gesture-handler": "~2.14.0", "react-native-keyboard-aware-scroll-view": "^0.9.5", "react-native-normalize": "^1.0.1", "react-native-otp-inputs": "^7.4.0", "react-native-reanimated": "~3.6.2", "react-native-safe-area-context": "4.8.2", "react-native-screens": "~3.29.0", "react-native-searchable-dropdown": "^1.1.3", "react-native-smooth-pincode-input": "^1.0.9", "react-native-svg": "14.1.0", "react-native-swiper": "^1.6.0", "react-native-webview": "13.6.4", "react-native-wizard": "^2.1.1", "react-redux": "^8.0.5", "redux": "^4.2.1", "redux-persist": "^6.0.0", "redux-thunk": "^2.4.2", "typescript": "^5.1.3" }, "scripts": { "postinstall": "patch-package" } }
排查与解决步骤
- 检查Expo配置文件的插件项:错误提示明确指向
.plugins[0]格式异常,优先打开项目根目录的app.json或app.config.js,查看expo.plugins数组。确保每一项都是字符串(插件名称)、配置对象(如["插件名", { 配置项 }])或函数,移除空值、数组等非法类型的项。 - 定位冲突依赖:部分第三方依赖会自动向Expo配置注入插件,可能导致格式错误。可以:
- 临时移除
package.json中的非Expo官方依赖(如@kichiyaki/react-native-barcode-generator、react-native-chart-kit等),执行npm install和npx expo start --clear测试。 - 若错误消失,再逐个重新添加依赖,每次添加后启动项目,找到引发问题的具体包。
- 临时移除
- 检查patch-package补丁:项目使用了
patch-package,补丁可能修改了Expo相关文件的结构。查看patches目录下的所有补丁,尤其是涉及expo包的内容,暂时移除可疑补丁后重新安装依赖测试。 - 导出并验证Expo配置:执行
npx expo config命令导出当前配置,查看输出中的plugins数组,确认每一项格式合规。若发现异常项,追踪其来源(手动配置或依赖注入)并修正。 - 彻底清理缓存:执行
npx expo r -c清除Expo的Metro缓存和原生项目缓存,再尝试启动项目。
内容的提问来源于stack exchange,提问作者Muhammad Syafiq
相关产品推荐
相关产品推荐

