React Native Expo安装@apollo/client后无法解析main模块字段求助
这个报错是因为@apollo/client v3.7及以上版本默认将CommonJS入口文件后缀改为.cjs,而React Native默认的Metro打包器默认未配置识别.cjs后缀,导致找不到入口文件,可按照以下方案解决:
方案1:配置Metro支持.cjs后缀(推荐,可兼容最新版Apollo Client)
- 在项目根目录创建/编辑
metro.config.js,添加以下配置:
const { getDefaultConfig } = require('expo/metro-config'); const config = getDefaultConfig(__dirname); // 新增.cjs后缀支持 config.resolver.sourceExts.push('cjs'); module.exports = config;
- 配置完成后执行命令清除缓存重启Expo服务:
npx expo start --clear
方案2:降级Apollo Client版本
如果配置Metro后仍有兼容问题,可降级到3.7之前的稳定版本:
- 执行安装命令:
npm install @apollo/client@3.6.11 graphql
如果使用yarn,执行:yarn add @apollo/client@3.6.11 graphql - 安装完成后同样执行
npx expo start --clear重启服务即可。
补充排查
如果上述操作都无效,可切换官方npm源后重新安装依赖:npm config set registry https://registry.npmjs.org/
之后删除node_modules、package-lock.json/yarn.lock文件重新安装即可。
内容的提问来源于stack exchange,提问作者May
相关产品推荐
相关产品推荐

