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

React Native Expo模块大小写报错 iOS端无法解析模块

问题根因

这个问题和用index.ts做统一模块导出没有直接关系,核心是macOS默认文件系统大小写不敏感的特性,叠加多层打包缓存、Git大小写跟踪默认配置共同导致:

  • macOS默认APFS分区为大小写不敏感格式,手动修改文件夹大小写时,系统不会真正刷新文件路径索引,Expo/RN使用的Metro打包器、Watchman文件监听服务、babel-loader都会留存之前大写路径的模块记录
  • Git默认在大小写不敏感文件系统上不跟踪纯大小写的文件名变更,之前执行git revert后,Git仓库记录的路径和本地实际文件路径状态不一致,部分import语句保留了旧的大写路径引用,部分已经改为小写,就触发了同模块多大小写冲突的警告。Web端webpack容错性较高可以正常编译,iOS端Metro打包器对路径校验更严格,直接抛出模块无法解析的错误。
  • Netlify部署用的Linux环境是大小写敏感文件系统,只要引用路径和实际文件大小写不匹配就会编译失败。
修复步骤

按顺序操作,不要跳步:

1. 统一所有引用路径的大小写

全局搜索项目内所有import语句,把所有指向你修改过名称的文件夹(比如CommonUI、Forms等)的引用,全部统一为和Git仓库存储一致的小写格式,重点检查各个index.ts导出文件内的相对路径,这类文件最容易漏改。

2. 彻底清除全链路缓存

先停掉所有正在运行的Expo服务、打包进程、iOS模拟器,再依次执行以下操作:

  • 清除Watchman文件监听缓存:
    watchman watch-del-all
    
  • 删除项目本地缓存文件夹:直接删除项目根目录下的.expo文件夹、node_modules/.cache文件夹
  • 清除依赖缓存并重装:
    rm -rf node_modules
    # 对应你使用的包管理器删除对应锁文件,不要全删
    rm -f package-lock.json
    # rm -f yarn.lock
    # rm -f pnpm-lock.yaml
    npm install # 替换为你用的包管理器安装命令,比如yarn、pnpm install
    
  • 清除iOS模拟器缓存:打开iOS模拟器,点击顶部菜单栏Device-Erase All Content and Settings,清空模拟器内留存的旧构建包。
  • 启动Expo时强制清Metro缓存:
    expo start -c
    

3. 修改Git配置避免后续复发

执行命令开启Git的大小写敏感跟踪,防止以后改文件名大小写Git不识别的问题:

git config core.ignorecase false

配置完成后确认本地文件路径大小写和Git记录完全一致,正常提交推送后,Netlify部署的大小写错误也会同步解决。

相关说明
  • index.ts统一导出(桶导出)本身不会引发大小写问题,只是如果桶文件内的路径引用没同步改对大小写,会比分散引用更容易漏改,进而触发打包器的大小写冲突警告。
  • 如果执行完以上步骤还是有警告,全局搜代码里的大写路径关键词(比如CommonUI),肯定还有漏改的引用,把所有大写引用全替换成小写即可。

内容的提问来源于stack exchange,提问作者seven

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 19:36:45