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

Node.js读取PDF检测日期出现TypeError错误,求助解决

解决Node.js读取PDF时的TypeError: Cannot read properties of undefined (reading '2')问题

错误原因

报错的核心是并非所有parseFileItems返回的item都包含text属性。PDF文件中除了文本行,还可能存在图形、空白块、元数据等非文本元素,这些元素对应的item没有text字段,直接访问item.text[2]就会触发"读取undefined属性"的错误。你单独测试时只验证了有文本的日期行,但代码里没过滤掉无text的item。

修复后的代码

import {PdfReader} from "pdfreader";
import { convertArrayToCSV } from "convert-array-to-csv";

new PdfReader().parseFileItems("600067301-2024-04-03.pdf",(err,item) => {
    if (err){
        console.warn("error:", err); // 修复原代码错误:输出实际err变量而非字符串"err"
    }
    else if (!item){
        console.warn("end of file");  
    }
    // 先校验text存在、是字符串且长度足够,再判断日期格式
    else if (item.text && typeof item.text === 'string' && item.text.length >= 3 && item.text[2] === '/'){
        console.log('date found!!!');
        console.log('匹配到的日期:', item.text); // 可选:打印具体日期便于验证
    }
})

关键修复点

  • 先判断item.text是否存在,避免访问undefined属性
  • 校验typeof item.text === 'string':防止部分PDF解析场景下text返回数组而非字符串
  • 校验item.text.length >=3:确保字符串长度足够,避免访问索引2时超出范围
  • 修正原代码的错误输出:将console.warn("error: err");改为console.warn("error:", err);,确保能看到实际错误信息

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 00:30:00