Skip to content

参考

PapaParse 5.x 的 API、配置选项、结果对象与常量速查。两个核心方法:Papa.parse(input, config)Papa.unparse(data, config)

一、两个核心方法

方法方向input / data返回
Papa.parse(input, config)CSV → JS字符串 / File / URL(download) / Node 流 / NODE_STREAM_INPUT字符串非流式时同步返回 ParseResult;否则走回调
Papa.unparse(data, config)JS → CSV数组的数组 / 对象数组 / { fields, data }CSV 字符串(同步)

二、parse 解析配置(config)

选项默认含义
delimiter""(自动探测)分隔符;可为字符串或函数;支持多字符
newline""(自动探测)换行序列:\r\n\r\n
quoteChar'"'字段引号字符
escapeChar'"'引号内转义引号的字符(默认双写引号)
headerfalse首行作字段名,每行变对象,字段名记入 meta.fields
transformHeaderundefined(header, index) => string 规范每个表头名(需 header:true
dynamicTypingfalse数字/布尔转对应类型;可传对象/函数按列控制
preview0>0 时只解析前 N 行
encoding""本地文件编码(FileReader 支持的值)
workerfalse在 Web Worker 线程解析,避免阻塞 UI
commentsfalse注释前缀字符串(如 "#"),匹配的整行跳过
stepundefined(results, parser) => void 逐行流式回调
completeundefined(results, file?) => void 解析完成回调
errorundefined(error, file?) => void 错误回调
downloadfalse把首参当 URL 下载后解析
downloadRequestHeadersundefined下载请求的自定义 HTTP 头
downloadRequestBodyundefined设了则改用 POST,作为请求体
withCredentialsundefinedXHR 的 withCredentials
skipEmptyLinesfalse跳空行;'greedy' 连只含空白的行也跳
chunkundefined(results, parser) => void 逐块流式回调
chunkSizeundefined覆盖默认块大小
fastModeundefined无引号数据走快路径(通常自动;含引号别强开)
beforeFirstChunkundefined(chunk) => string? 在首块解析前修改原始文本
transformundefined(value, colIndexOrHeader) => any 逐值清洗/转换
delimitersToGuess`[',', '\t', '', ';', RECORD_SEP, UNIT_SEP]`
skipFirstNLines0跳过开头 N 行再解析

三、ParseResult 结果对象

ts
interface ParseResult<T> {
  data: T[];          // 行数据:header:false 为数组的数组;header:true 为对象数组
  errors: ParseError[]; // 错误数组(容错收集,不抛异常)
  meta: ParseMeta;    // 元信息
}
  • dataheader:falsestring[][]header:true → 对象数组。多出表头的字段进 __parsed_extra
  • meta 常见字段:delimiterlinebreakabortedtruncatedcursor,以及 header:true 时的 fieldsrenamedHeaders

四、ParseError 错误对象

ts
interface ParseError {
  type: "Quotes" | "Delimiter" | "FieldMismatch";
  code: "MissingQuotes" | "UndetectableDelimiter" | "TooFewFields" | "TooManyFields" | ...;
  message: string;
  row?: number; // 出错行号
}

PapaParse 容错:错误进 errors 而非抛异常,data 仍尽量返回。应主动检查 result.errors.length

五、parser 流式控制(step/chunk 回调第二参)

方法作用Worker 下
parser.abort()立即停止解析(触发 complete,meta.aborted = true✅ 可用
parser.pause()暂停解析(可恢复)❌ 不可用
parser.resume()恢复暂停的解析❌ 不可用

六、unparse 反解析配置(config)

选项默认含义
quotesfalse加引号策略:true 全加 / 布尔数组按列 / 函数按值;默认仅必要时加
quoteChar'"'引号字符
escapeChar'"'转义引号的字符
delimiter","分隔符(支持多字符)
headertrue是否输出表头行
newline"\r\n"换行序列(默认 CRLF,符合 RFC 4180)
skipEmptyLinesfalse跳空行;'greedy' 连只含空白的也跳
columnsnull对象数组时显式指定输出哪些列及顺序(字符串数组)
escapeFormulaefalse给以 = + - @ 等开头的单元格加前缀,防 CSV 公式注入

七、Papa 常量

常量用途
Papa.BAD_DELIMITERS["\r","\n",'"',""]禁止用作分隔符的字符
Papa.RECORD_SEPASCII 30记录分隔符(不可见)
Papa.UNIT_SEPASCII 31单元分隔符(不可见)
Papa.WORKERS_SUPPORTEDboolean当前环境是否支持 Web Worker
Papa.LocalChunkSize约 10 MB本地 File 流式解析的默认块大小
Papa.RemoteChunkSize约 5 MB远程下载流式解析的默认块大小
Papa.DefaultDelimiter","自动探测失败时的回退分隔符
Papa.NODE_STREAM_INPUT哨兵值作为 input 传入时,parse 返回 Node Duplex 流供 .pipe()

八、同步 vs 异步速记

输入 / 模式行为
字符串 + 非流式(无 step/worker)同步返回 ParseResult
File 对象异步走 complete/step 回调
URL(download:true异步走回调
worker:true异步走回调(不支持 pause/resume)
Node 可读流 / NODE_STREAM_INPUT流式/异步

需要实战机制(流式、Worker、安装策略对比),见 指南 · 基础;高阶用法见 指南 · 进阶指南 · 专家