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

在EAS服务器构建APK时react-native-maps出现仅原生模块导入错误

解决EAS构建APK时react-native-maps的原生模块导入错误

在EAS服务器上构建Android APK时,react-native-maps抛出错误,系统误判为在web环境导入仅原生模块,但实际是针对移动端构建。

错误日志

Exporting server
λ Bundling failed 8070ms node_modules/expo-router/build/static/getServerManifest.js (1047 modules)
Error: Importing native-only module "react-native/Libraries/Utilities/codegenNativeCommands" on web from: /home/expo/workingdir/build/node_modules/react-native-maps/lib/MapMarkerNativeComponent.js
Error: Importing native-only module "react-native/Libraries/Utilities/codegenNativeCommands" on web from: /home/expo/workingdir/build/node_modules/react-native-maps/lib/MapMarkerNativeComponent.js
at resolver (/home/expo/workingdir/build/node_modules/@expo/cli/src/start/server/metro/withMetroMultiPlatform.ts:585:19)
at resolveRequest (/home/expo/workingdir/build/node_modules/@expo/cli/src/start/server/metro/withMetroResolvers.ts:76:29)
at firstResolver (/home/expo/workingdir/build/node_modules/react-native-css-interop/src/metro/index.ts:257:26)
at firstResolver (/home/expo/workingdir/build/node_modules/@expo/cli/src/start/server/metro/withMetroResolvers.ts:108:16)
at resolveRequest (/home/expo/workingdir/build/node_modules/@expo/cli/src/start/server/metro/withMetroResolvers.ts:137:16)
at Object.resolve (/home/expo/workingdir/build/node_modules/metro-resolver/src/resolve.js:36:12)
at ModuleResolver.resolveDependency (/home/expo/workingdir/build/node_modules/metro/src/node-haste/DependencyGraph/ModuleResolution.js:74:31)

解决方案

  • 确认EAS构建配置:检查eas.json中的build配置,确保platform字段设置为"android",避免构建过程触发web环境的模块解析逻辑。
  • 配置Metro解析规则:在metro.config.js中调整resolver配置,优先解析android平台模块。示例配置:
    const { getDefaultConfig } = require('expo/metro-config');
    const config = getDefaultConfig(__dirname);
    
    config.resolver.platforms = ['android', 'ios', 'web']; // 将android放在首位
    config.resolver.resolveRequest = (context, moduleName, platform) => {
      if (moduleName.includes('react-native-maps') && platform === 'web') {
        // 针对web环境返回空模块
        return { filePath: require.resolve('./empty-module.js') };
      }
      return context.resolveRequest(context, moduleName, platform);
    };
    
    module.exports = config;
    
    配套创建empty-module.js文件,内容为export {};
  • 清除构建缓存:执行eas build --clear-cache,清除EAS服务器和本地构建缓存后重新发起构建。
  • 版本兼容性检查:确认react-native-maps版本与当前Expo SDK版本匹配,必要时升级或降级到兼容版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 19:36:08