删除yarn.lock重装后Expo遇BigInt未找到及main未注册错误求助
解决删除yarn.lock后React Native项目出现BigInt未找到及AppRegistry未注册问题
问题根源
删除yarn.lock后,Yarn会拉取依赖的最新兼容版本,原项目依赖版本是经过验证的稳定组合,新版本依赖可能引入了对BigInt的使用,但当前React Native/Expo环境未提供该特性的polyfill,导致初始化报错,进而引发AppRegistry未注册的连锁问题。
解决方法
1. 恢复原依赖版本(最直接方案)
从仓库重新拉取原始的yarn.lock文件,或使用本地备份恢复,然后执行:
yarn install
此方法能直接回到项目验证过的依赖版本组合,彻底规避版本兼容问题。
2. 添加BigInt Polyfill(需保留新依赖版本时使用)
如果需要升级依赖,通过添加polyfill解决BigInt缺失问题:
- 安装必要依赖:
yarn add @babel/plugin-transform-bigint core-js --dev - 修改项目根目录的
babel.config.js,配置polyfill和转换插件:module.exports = function(api) { api.cache(true); return { presets: ['babel-preset-expo'], plugins: [ ['@babel/plugin-transform-bigint', { loose: true }], ['core-js', { version: '3.20', proposals: true }] ] }; }; - 清除Metro缓存并重启开发服务:
yarn start --reset-cache
3. 锁定核心依赖版本
查看原yarn.lock中react-native、expo等核心依赖的具体版本,在package.json中写死版本号(移除版本号前的^或~符号),例如:
{ "dependencies": { "react-native": "0.68.2", "expo": "45.0.0" } }
然后重新执行yarn install,确保依赖版本与原项目一致。
注意事项
不要随意删除yarn.lock或package-lock.json,这类文件用于锁定依赖版本,保证不同开发环境、部署环境中安装的依赖完全一致,避免版本兼容类问题。
内容的提问来源于stack exchange,提问作者Lê Văn Thành
相关产品推荐
相关产品推荐

