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

React Native用PapaParse解析CSV遇Network request failed错误求助

React Native中PapaParse解析CSV报Network request failed的解决方法

报错TypeError: Network request failed的核心原因是:React Native里fetch不能用相对路径直接访问本地assets文件,这种写法会被当成网络请求处理,而实际上本地asset资源的访问方式和Web环境完全不同。

方案一:使用require加载本地CSV(推荐简单场景)

1. 修改解析代码

将parseCSV方法中的fetch逻辑替换为require加载:

async parseCSV() {
  try {
    // 直接用require加载assets下的CSV文件
    const csvData = require('./assets/data.csv').default;
    
    Papa.parse(csvData, {
      header: true,
      complete: this.getData
    });
  } catch (error) {
    console.error('Error parsing CSV file:', error);
  }
}

2. 配置Metro支持CSV文件

Metro默认不识别CSV格式的资源,需要修改metro.config.js添加支持:

const { getDefaultConfig, mergeConfig } = require('@react-native/metro-config');

const config = {};

module.exports = mergeConfig(getDefaultConfig(__dirname), {
  resolver: {
    assetExts: [...getDefaultConfig(__dirname).resolver.assetExts, 'csv'],
  },
});

方案二:使用react-native-fs读取本地文件(适合大文件或复杂场景)

如果CSV文件体积较大,或者需要更灵活的文件操作,可以使用react-native-fs库:

1. 安装依赖

npm install react-native-fs --save
# 或
yarn add react-native-fs

2. 修改解析代码

import RNFS from 'react-native-fs';

async parseCSV() {
  try {
    // 获取打包后assets文件的绝对路径
    const filePath = RNFS.MainBundlePath + '/assets/data.csv';
    const csvData = await RNFS.readFile(filePath, 'utf8');
    
    Papa.parse(csvData, {
      header: true,
      complete: this.getData
    });
  } catch (error) {
    console.error('Error parsing CSV file:', error);
  }
}

额外检查项

  • 确认data.csv确实存在于项目根目录的assets文件夹中,路径拼写无错误
  • 若使用Expo,确保assets已在app.json的assets数组中声明:
{
  "expo": {
    "assets": ["./assets/data.csv"]
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 22:07:12