Expo SDK升级后peer dependency依赖冲突问题求助
解决方案
1. 替换已废弃的expo-app-loading包
expo-app-loading@1.3.0是为旧版Expo SDK设计的官方废弃包,正是它引入的旧子依赖导致了版本冲突。官方推荐用expo-splash-screen替代:
- 卸载旧包:
npm uninstall expo-app-loading - 安装官方替代包:
npx expo install expo-splash-screen - 修改代码逻辑:替换原
AppLoading组件的用法,改用启动屏控制API。示例:import * as SplashScreen from 'expo-splash-screen'; import { useFonts } from 'expo-font'; import { useEffect } from 'react'; // 阻止启动屏自动隐藏 SplashScreen.preventAutoHideAsync(); export default function App() { const [fontsLoaded] = useFonts({ // 你的字体加载配置,比如:'Roboto': require('./assets/fonts/Roboto.ttf') }); // 资源加载完成后隐藏启动屏 useEffect(() => { if (fontsLoaded) { SplashScreen.hideAsync(); } }, [fontsLoaded]); if (!fontsLoaded) { return null; } return <YourAppRootComponent />; }
2. 清理依赖并重新安装
确保旧依赖完全移除:
- 删除
node_modules和锁文件:rm -rf node_modules package-lock.json # Windows系统执行: # rmdir /s /q node_modules && del package-lock.json - 重新安装依赖:
npx expo install
3. (可选)强制锁定冲突依赖版本
如果替换包后仍有残留冲突,在package.json中添加resolutions字段强制指定兼容版本:
"resolutions": { "expo-modules-autolinking": "~1.2.0", "@expo/config-plugins": "~6.0.0", "@expo/prebuild-config": "~6.0.0" }
添加后执行:
npm install
4. 验证修复结果
运行expo-doctor确认依赖兼容:
npx expo-doctor
内容的提问来源于stack exchange,提问作者John Pachuau
相关产品推荐
相关产品推荐

