You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助: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 r -c
    
    这个命令会彻底清除Expo的缓存,避免旧的依赖信息干扰。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 19:38:12