Expo+Sanity.io开发React Native移动端报错:重复文件或模拟项
解决Expo React Native集成Sanity.io后移动端重复文件报错问题
报错现象
Expo开发的React Native应用,Web端运行正常,但iOS模拟器、Android Studio中出现报错:Error: Duplicated files or mocks. ReactNative-Expo-sanity.io
可行解决步骤
清理Expo缓存
缓存堆积是这类重复文件报错的常见诱因,执行命令重启项目:npx expo start --clear重新安装依赖
依赖版本冲突或重复安装也会引发该问题,按以下步骤操作:- 删除项目根目录下的
node_modules文件夹、package-lock.json(或yarn.lock)文件 - 重新安装依赖:
npm install # 使用yarn的话执行: # yarn install
- 删除项目根目录下的
配置Metro排除重复文件
在项目根目录的metro.config.js中添加规则,排除Sanity相关的重复mock或测试文件,示例配置:const { getDefaultConfig } = require('@expo/metro-config'); const config = getDefaultConfig(__dirname); config.resolver.blockList = new Set([ ...config.resolver.blockList, /node_modules\/sanity\/.*\/mock\.js/, /node_modules\/sanity\/.*\/test\.js/, ]); module.exports = config;检查Sanity依赖适配性
确保使用适配React Native环境的Sanity包,优先用@sanity/client而非包含Web专属依赖的包;如果用到了Sanity的Web专属组件(比如预览组件),需要通过Platform.OS做条件渲染,仅在Web端加载这类组件。
内容的提问来源于stack exchange,提问作者sebastian velez
相关产品推荐
相关产品推荐

