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
相关产品推荐
相关产品推荐

