Expo React Native项目中SRT字幕文件路径解析失败求助
Expo React Native项目中SRT文件无法解析的解决思路
问题背景
开发基于Expo的React Native项目,需展示视频并搭配SRT字幕,未使用expo-av的字幕模块。部分SRT文件通过require引入时报错:
Unable to resolve "../assets/srt/Audio2.srt" from "components\PlayerSound.js"
代码中的路径配置:
const goodSubPaths = [ require('../assets/srt/Audio2.srt'), require('../assets/srt/Audio4.srt'), ]; const badSubPaths = [ require('../assets/srt/Audio3.srt'), require('../assets/srt/Audio5.srt'), ]; const introPath = require('../assets/srt/Audio1.srt');
SRT文件实际存在于C:\Dev\MI\assets\srt目录,包含对应文件:
Mode LastWriteTime Length Name -a---- 15/10/2023 22:39 4335 Audio1.srt -a---- 15/10/2023 22:39 3013 Audio2.srt -a---- 15/10/2023 22:39 4216 Audio3.srt -a---- 15/10/2023 22:39 220 Audio4.srt -a---- 15/10/2023 22:39 295 Audio5.srt
已尝试调整路径、使用expo-asset/expo-file-system等方案,问题未解决,以下是针对性解决思路:
解决思路
1. 核对文件名大小写与路径分隔符
- Metro bundler区分文件名大小写,即使Windows文件系统不区分,需确保代码中
require的文件名(如Audio3.srt)与实际文件的大小写完全一致,无拼写错误。 - 代码中使用正斜杠
/,但报错路径显示反斜杠\,可尝试统一将代码中的路径改为反斜杠,或确认PlayerSound.js的位置:若该文件在components目录,../assets需指向项目根目录下的assets文件夹,确认目录层级无错误。
2. 配置Metro支持SRT文件解析
默认Metro不识别.srt格式,需修改metro.config.js添加对应扩展名:
const { getDefaultConfig } = require('expo/metro-config'); const config = getDefaultConfig(__dirname); // 将srt添加到可解析的资源扩展名列表 config.resolver.assetExts.push('srt'); module.exports = config;
修改后完全重启Metro bundler(不要仅热重载),再测试引入。
3. 确保SRT文件被Expo打包纳入
在app.json的expo.assets字段中添加srt目录,确保Expo打包时包含这些文件:
{ "expo": { "assets": [ "./assets/srt/" ] } }
4. 正确使用expo-asset加载资源
若使用expo-asset,需通过异步方式加载资源,而非直接同步require:
import { Asset } from 'expo-asset'; async function loadSubtitle(subAsset) { const asset = Asset.fromModule(subAsset); await asset.downloadAsync(); // 加载完成后使用asset.localUri获取本地路径 console.log('字幕本地路径:', asset.localUri); return asset.localUri; } // 调用示例 loadSubtitle(require('../assets/srt/Audio2.srt'));
5. 清除Metro缓存
缓存可能导致路径解析异常,运行以下命令清除缓存并重启项目:
npx expo start --clear
6. 检查SRT文件内容合法性
部分文件(如报错的Audio3/Audio5)可能存在格式问题,打开文件确认:
- 字幕格式符合SRT规范(序号、时间轴、字幕内容的结构)
- 文件无特殊编码或不可见字符导致Metro解析失败
内容的提问来源于stack exchange,提问作者Arhkaz
相关产品推荐
相关产品推荐

