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

Expo应用提交至Expo Dev构建失败,本地调试构建正常

问题描述

我的Expo应用在本地执行./gradlew clean和./gradlew assembleDebug都能构建成功,但提交到Expo Dev平台构建时失败了。平台日志显示:app:createBundleReleaseJsAndAssets任务执行失败,具体报错是TypeError: (0 , sourceMapString_1.default) is not a function,完整日志如下:

UP-TO-DATE
> Task :react-native-community_slider:prepareReleaseArtProfile
> Task :react-native-gesture-handler:packageReleaseAssets
> Task :react-native-community_slider:mergeReleaseJavaResource
> Task :react-native-gesture-handler:prepareLintJarForPublish UP-TO-DATE
> Task :react-native-gesture-handler:prepareReleaseArtProfile
> Task :react-native-community_slider:syncReleaseLibJars
> Task :react-native-community_slider:bundleReleaseLocalLintAar
> Task :react-native-community_slider:extractProguardFiles
> Task :react-native-community_slider:writeReleaseLintModelMetadata
> Task :react-native-gesture-handler:mergeReleaseJavaResource
> Task :react-native-gesture-handler:syncReleaseLibJars
> Task :react-native-gesture-handler:bundleReleaseLocalLintAar
> Task :app:createBundleReleaseJsAndAssets
Android Bundling failed 82561ms node_modules/expo-router/entry.js (1689 modules)
TypeError: (0 , sourceMapString_1.default) is not a function
TypeError: (0 , sourceMapString_1.default) is not a function
at Chunk.serializeToAssetsAsync (/home/expo/workingdir/build/node_modules/@expo/metro-config/src/serializer/serializeChunks.ts:455:24)
at /home/expo/workingdir/build/node_modules/@expo/metro-config/src/serializer/serializeChunks.ts:621:25
    at Array.map (<anonymous>)
    at serializeChunksAsync (/home/expo/workingdir/build/node_modules/@expo/metro-config/src/serializer/serializeChunks.ts:619:17)
    at graphToSerialAssetsAsync (/home/expo/workingdir/build/node_modules/@expo/metro-config/src/serializer/serializeChunks.ts:150:26)
    at /home/expo/workingdir/build/node_modules/@expo/metro-config/src/serializer/withExpoSerializers.ts:263:50
at serializer (/home/expo/workingdir/build/node_modules/@expo/cli/src/start/server/metro/MetroBundlerDevServer.ts:296:12)
    at MetroBundlerDevServer._bundleDirectAsync (/home/expo/workingdir/build/node_modules/@expo/cli/src/start/server/metro/MetroBundlerDevServer.ts:1026:28)
    at processTicksAndRejections (node:internal/process/task_queues:95:5)
    at MetroBundlerDevServer.metroLoadModuleContents (/home/expo/workingdir/build/node_modules/@expo/cli/src/start/server/metro/MetroBundlerDevServer.ts:442:21)
> Task :react-native-community_slider:generateReleaseLintModel
> Task :app:createBundleReleaseJsAndAssets FAILED
> Task :react-native-gesture-handler:extractProguardFiles
> Task :react-native-reanimated:configureCMakeRelWithDebInfo[arm64-v8a]
> Task :expo-modules-core:buildCMakeRelWithDebInfo[arm64-v8a]
FAILURE:
Build failed with an exception.
* 出错原因:
任务 ':app:createBundleReleaseJsAndAssets' 执行失败。
>
执行命令 'node' 时进程以非零退出码1结束
* 尝试方案:
>
加上 --stacktrace 参数获取堆栈跟踪信息。
> 加上 --info 或 --debug 参数获取更多日志输出。
> 加上 --scan 参数获取完整分析报告。
> 访问 https://help.gradle.org 获取更多帮助。
BUILD FAILED in 5m 48s
534个可执行任务: 518个已执行, 16个已是最新状态
Error: Gradle构建失败,原因未知。查看 "Run gradlew" 阶段的日志获取更多信息。
解决方案
  • 对齐Node.js版本:本地和Expo Dev平台的Node版本可能不一致,导致模块导入行为差异。检查项目的.nvmrc或package.json中的engines字段,明确指定Node版本,确保平台构建时使用和本地一致的版本。

  • 锁定source-map依赖版本:报错来自@expo/metro-config的序列化逻辑,大概率是source-map版本不兼容导致的。在package.json中添加版本锁定:

    "resolutions": {
      "source-map": "0.7.4"
    }
    

    然后执行npm install或yarn install,提交更新后的package-lock.json/yarn.lock到代码仓库。

  • 清理缓存并本地预演release构建:

    1. 执行npx expo prebuild --clean清理预构建文件
    2. 删除node_modules、package-lock.json/yarn.lock,重新安装依赖
    3. 本地尝试构建release版本:npx expo run:android --variant release,如果能复现问题,先在本地排查解决,再提交到平台。
  • 检查Metro配置:确保项目的metro.config.js使用官方默认配置,不要自定义序列化逻辑干扰Expo的处理:

    const { getDefaultConfig } = require('@expo/metro-config');
    const config = getDefaultConfig(__dirname);
    module.exports = config;
    

内容的提问来源于stack exchange,提问作者Burak Çetin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 00:01:03