Expo升级后出现Transformer.transform is not a function问题求助
嘿,我完全懂你折腾好几天找解决方案的烦躁——升级Expo后Web能正常跑,但iOS/Android模拟器死活构建不起来,这种问题确实磨人。结合你给出的配置和已经尝试过的步骤,我整理了几个可能的修复方向,你可以挨个试试:
1. 修复Metro版本冲突
你的devDependencies里,metro用的是^0.60.0,但metro-react-native-babel-preset是^0.59.0,这两个版本不匹配很可能会导致打包过程出错。Expo SDK 38对应的Metro版本应该是0.59.x系列,建议把metro版本统一:
- 修改
package.json里的metro依赖为:"metro": "^0.59.0" - 删除
node_modules和package-lock.json - 重新执行
npm install(或yarn install)
2. 强制清除模拟器打包缓存
有时候旧的打包缓存会留在模拟器里,即使你删了node_modules也没用。试试用清除缓存的命令启动模拟器:
- iOS:
expo start --ios --clear - Android:
expo start --android --clear
3. 检查依赖兼容性
你用的react-native-paper@4.0.1可能和Expo SDK 38不兼容——4.x版本的react-native-paper通常需要更高版本的React Native,而SDK38对应的RN版本是0.62.x。可以尝试把react-native-paper降级到3.x版本,比如:
npm install react-native-paper@3.10.1
4. 验证Babel配置
确保项目根目录有正确的babel.config.js文件,内容应该是:
module.exports = function(api) { api.cache(true); return { presets: ['babel-preset-expo'], }; };
如果没有这个文件,直接创建一个放进去,这能保证Expo的打包流程正确识别你的代码。
5. 确认入口文件路径
你提供的node_modules/expo/AppEntry.js里引用了../../App,请确认项目根目录确实存在App.js(或App.tsx/App.jsx),并且路径没有大小写错误(比如在Mac/Linux上大小写敏感)。
先试试这些步骤,应该能解决大部分模拟器构建失败的问题!
内容的提问来源于stack exchange,提问作者Kittaru87

