React Native Expo突发错误:找不到模块'babel-preset-react'求助
我的React Native Expo应用原本能在iOS模拟器正常运行,给TextInput标签添加placeholder后,模拟器刷新时出现错误。我从Git仓库拉取了几分钟前还能正常运行的版本,但终端仍报错:node_modules/expo/AppEntry.js: Cannot find module 'babel-preset-react',并给出了依赖栈信息。我已经尝试执行npm install、npm install --save-dev @babel/preset-react,但问题没解决。应用接近完成,求解决建议。
babel.config.js 初始配置
module.exports = function(api) { api.cache(true); return { presets: ['babel-preset-expo', "react", "es2015", "stage-0"], }; };
添加@babel/preset-react后的配置
module.exports = function(api) { api.cache(true); return { presets: ["@babel/preset-react", 'babel-preset-expo', "react", "es2015", "stage-0"], }; };
package.json
{ "name": "osl", "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" }, "dependencies": { "@react-navigation/native": "^6.1.1", "@react-navigation/native-stack": "^6.9.7", "expo": "~47.0.9", "expo-checkbox": "~2.2.2", "expo-font": "~11.0.1", "expo-secure-store": "~12.0.0", "expo-splash-screen": "~0.17.5", "expo-status-bar": "~1.4.2", "formik": "^2.2.9", "react": "18.1.0", "react-native": "0.70.5", "react-native-safe-area-context": "4.4.1", "react-native-screens": "~3.18.0" }, "devDependencies": { "@babel/core": "^7.12.9", "@babel/preset-react": "^7.18.6" }, "private": true }
清理缓存并重装依赖
先删掉旧依赖和锁文件,再重新安装并清除Expo缓存:rm -rf node_modules rm package-lock.json npm install expo start -cexpo start -c会彻底清除Expo的缓存,避免旧配置残留干扰。简化Babel配置
Expo的babel-preset-expo已经集成了所有React Native开发需要的预设,包括@babel/preset-react,完全不需要额外添加react、es2015、stage-0这些冗余配置。把babel.config.js改成最简化版本:module.exports = function(api) { api.cache(true); return { presets: ['babel-preset-expo'], }; };多余的预设是导致依赖冲突、模块找不到的核心原因。
修复package.json语法错误
你当前的package.json中,devDependencies下的@babel/core和@babel/preset-react之间缺少逗号,这会导致npm无法正确解析依赖列表,必须补上这个逗号后再重装依赖。更新Expo CLI(可选)
把全局Expo CLI更新到最新版本,规避版本兼容问题:npm install -g expo-cli
内容的提问来源于stack exchange,提问作者TAS1987

