Expo构建React Native生产包失败:无法解析本地视频文件
解决Expo生产构建无法解析本地视频文件的问题
以下是几个可行的修复方案,按优先级尝试:
用
require引入视频资源
开发时Expo Go能自动识别相对路径,但生产构建需要让metro打包工具明确追踪资源。把字符串路径替换为require引入:// 原代码可能是这样的: // <Video source={{ uri: '../assets/avatar.mp4' }} ... /> // 修改为: const videoAsset = require('../assets/avatar.mp4'); <Video source={videoAsset} ... />这样metro会将视频文件复制到构建产物的正确位置,避免路径解析失败。
在
app.json中声明资源
把视频文件添加到expo.assets数组,让Expo预打包该资源:{ "expo": { "assets": [ "./assets/avatar.mp4" ] } }注意路径是相对于项目根目录的,不是组件文件的相对路径。
检查metro配置(若自定义过)
如果修改过metro.config.js,确保没有排除.mp4扩展名。默认配置已包含,但自定义时需确认:const { getDefaultConfig } = require('expo/metro-config'); const config = getDefaultConfig(__dirname); // 如果assetExts里没有mp4,添加进去 if (!config.resolver.assetExts.includes('mp4')) { config.resolver.assetExts.push('mp4'); } module.exports = config;清理缓存后重新构建
缓存可能导致资源识别异常,执行以下命令清理缓存后再构建:expo r -c expo build:android # 对应安卓构建,iOS则用expo build:ios
内容的提问来源于stack exchange,提问作者wawag
相关产品推荐
相关产品推荐

