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

首次使用Sanity运行expo start遇jest-haste-map命名冲突问题求助

解决Expo + Sanity项目中jest-haste-map模块命名冲突问题

首次使用Sanity开发时,运行expo start命令会触发jest-haste-map模块命名冲突,报错显示根目录package.json与sanity/package.json文件重复,导致转换器构建失败,具体错误日志如下:

jest-haste-map: Haste模块命名冲突: deliveroo-clone
以下文件名称重复,请调整您的hasteImpl:
* <rootDir>\package.json
* <rootDir>\sanity\package.json

转换器构建失败: DuplicateError: 文件或模拟重复。请查看控制台获取更多信息
at setModule (C:\Users\Slima\Desktop\deliveroo-clone\node_modules\jest-haste-map\build\index.js:576:17)
at workerReply (C:\Users\Slima\Desktop\deliveroo-clone\node_modules\jest-haste-map\build\index.js:647:9)
at async Promise.all (index 10)
at C:\Users\Slima\Desktop\deliveroo-clone\node_modules\jest-haste-map\build\index.js:459:22
at Function.load (C:\Users\Slima\Desktop\deliveroo-clone\node_modules\metro\src\node-haste\DependencyGraph.js:86:36)
at Bundler.ready (C:\Users\Slima\Desktop\deliveroo-clone\node_modules\metro\src\Bundler.js:61:5)
at IncrementalBundler.ready (C:\Users\Slima\Desktop\deliveroo-clone\node_modules\metro\src\IncrementalBundler.js:309:5)
at Server.ready (C:\Users\Slima\Desktop\deliveroo-clone\node_modules\metro\src\Server.js:1156:5) {
mockPath1: 'package.json',
mockPath2: 'sanity\\package.json'
}
无法识别的事件: {"type":"transformer_load_failed","error":
{"mockPath1":"package.json","mockPath2":"sanity\\package.json","name":"Error","message":"文件或模拟重复。请查看控制台获取更多信息","stack":"Error: 文件或模拟重复。请查看控制台获取更多信息\n    at setModule (C:\Users\Slima\Desktop\deliveroo-clone\node_modules\jest-haste-map\build\index.js:576:17)\n    at workerReply (C:\Users\Slima\Desktop\deliveroo-clone\node_modules\jest-haste-map\build\index.js:647:9)\n    at async Promise.all (index 10)\n    at C:\Users\Slima\Desktop\deliveroo-clone\node_modules\jest-haste-map\build\index.js:459:22\n    at Function.load (C:\Users\Slima\Desktop\deliveroo-clone\node_modules\metro\src\node-haste\DependencyGraph.js:86:36)\n    at Bundler.ready (C:\Users\Slima\Desktop\deliveroo-clone\node_modules\metro\src\Bundler.js:61:5)\n    at IncrementalBundler.ready (C:\Users\Slima\Desktop\deliveroo-clone\node_modules\metro\src\IncrementalBundler.js:309:5)\n    at Server.ready (C:\Users\Slima\Desktop\deliveroo-clone\node_modules\metro\src\Server.js:1156:5)","}}

解决方案

  • 配置Metro忽略Sanity子目录:在项目根目录创建或修改metro.config.js,添加规则让Metro跳过扫描sanity文件夹,避免加载其package.json:
const { getDefaultConfig } = require('expo/metro-config');

const config = getDefaultConfig(__dirname);

// 添加Sanity目录到忽略列表
config.resolver.blockList = [
  /sanity\/.*/,
];

module.exports = config;
  • 清理缓存并重启项目:执行以下命令清除Expo和Metro的缓存,再重新启动项目:
npx expo start --clear
  • 确认Sanity独立运行:Sanity作为后端内容管理平台,其目录下的依赖和配置无需参与Expo前端打包,确保Sanity服务单独启动(如sanity start),不与Expo打包流程冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 18:16:04