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

Expo项目读取assets下txt文件报错:路径正确仍无法解析求解决

解决Expo项目中无法读取assets目录下txt文件的问题

你遇到的Unable to resolve "./assets/a.txt" from "App.tsx"错误,本质是Metro打包器默认不将txt文件识别为可通过require加载的资源,或者资源配置未正确生效,以下是几种可行解决方案:

方案1:修改Metro配置支持txt文件

Metro默认只处理特定扩展名的资源,需要手动添加txt到允许列表:

  1. 在项目根目录创建或编辑metro.config.js文件,添加如下代码:
const { getDefaultConfig } = require('expo/metro-config');

const config = getDefaultConfig(__dirname);
// 将txt添加到可解析的资源扩展名列表
config.resolver.assetExts.push('txt');

module.exports = config;
  1. 完全关闭当前Expo开发服务器,重新启动(npx expo start),配置修改需要重启才能生效。
  2. 原代码可以保持不变,此时require("./assets/a.txt")就能正确解析。

方案2:使用expo-file-system读取文件

无需修改配置,直接通过文件系统API读取:

  1. 先安装依赖:
npx expo install expo-file-system
  1. 修改App.tsx代码为:
import { StatusBar } from "expo-status-bar"
import { useEffect } from "react"
import { Text, View } from "react-native"
import * as FileSystem from 'expo-file-system';

export default function App() {
  useEffect(() => {
    const readTxtFile = async () => {
      // Expo会将assets目录下的文件打包到documentDirectory/assets路径下
      const fileUri = `${FileSystem.documentDirectory}assets/a.txt`;
      try {
        const content = await FileSystem.readAsStringAsync(fileUri);
        console.log('文件内容:', content);
      } catch (error) {
        console.error('读取文件失败:', error);
      }
    };
    readTxtFile();
  }, [])

  return (
    <View>
      <Text>Open up App.tsx to start working on your app!</Text>
    </View>
  )
}

额外检查项

  • 确认assets/a.txt文件确实存在,文件名大小写与代码中的引用完全一致(部分操作系统区分大小写);
  • 若使用Git管理项目,检查文件是否被.gitignore排除,导致未被打包到项目中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 07:00:09