求助:Expo App扫码后频繁崩溃,卸载react-native-SVG仍未解决
解决Expo App扫描二维码崩溃问题(卸载react-native-svg后仍存在)
这种情况真的让人抓狂——装了个依赖就搞崩了Expo客户端,卸载后问题还没消失,网页端却完全正常。别慌,我给你整理了几个针对性的解决方案,你可以按顺序试试:
1. 彻底清理项目和Expo客户端缓存
缓存残留大概率是罪魁祸首,先做最基础的清理:
- 先把手机上的Expo App彻底退出(后台进程也全部清除),然后重启App
- 在项目目录下执行命令清理依赖和锁文件:
rm -rf node_modules package-lock.json yarn.lock - 重新安装依赖:
npm install # 用yarn的话就执行 yarn install - 最后重置Expo的缓存并重启项目:
这个命令会彻底清除Expo的缓存,避免旧的依赖信息干扰。expo r -c
2. 排查依赖兼容性和残留配置
虽然你已经卸载了react-native-svg,但可能还有残留的配置或代码冲突:
- 划重点:Expo本身内置了
expo-svg,不需要额外安装react-native-svg,两者很容易出现版本冲突。检查你的项目代码,确保所有SVG相关的import都换成了expo-svg,而不是已卸载的react-native-svg - 打开
babel.config.js,如果之前为了react-native-svg添加了react-native-svg/plugin插件,现在要把它从配置中移除 - 检查
package.json,确认react-native-svg已经不在依赖列表里,若有残留手动删除后重新安装依赖
3. 重置或重装Expo客户端
有时候客户端的缓存会“记住”旧的错误状态:
- 打开Expo App的设置页面,找到「清除缓存」选项(不同版本位置略有差异,一般在设置底部),执行清除后重启App
- 如果清除缓存无效,直接卸载Expo App,从应用商店下载最新版本后再尝试扫码
4. 检查项目配置文件
如果上述方法都没用,可能是项目的babel或metro配置出现了异常:
- 检查
metro.config.js,确认没有添加过针对react-native-svg的特殊解析规则,若有则删除 - 重置babel配置为Expo默认模板,避免自定义配置导致冲突:
module.exports = function(api) { api.cache(true); return { presets: ['babel-preset-expo'], }; };
5. 新建空白项目排查问题
如果以上都解决不了,可能是原项目的某些深层配置出了问题:
- 执行
expo init test-svg-project新建一个空白Expo项目,直接扫码测试是否崩溃 - 如果空白项目正常,说明问题出在原项目中,可以逐步把原项目的代码、组件、配置迁移到新项目中,每迁移一部分就测试一次,定位到导致崩溃的具体部分
如果所有方法都试过还是不行,建议在执行expo start后仔细查看终端的日志输出,或者在Expo App中开启调试模式(摇一摇设备选择「Debug Remote JS」),看看崩溃前有没有具体的报错信息,这能帮你更精准地定位问题。
内容的提问来源于stack exchange,提问作者Edoardo Trotta
相关产品推荐
相关产品推荐

