Node.js中用FileReader读Excel文件遇找不到bufferjs/concat模块错误求助
解决Node.js中使用xlsx读取Excel时的
bufferjs/concat缺失问题 嘿,我来帮你搞定这个报错!首先得说清楚:你完全没必要在Node.js环境里用FileReader这个npm包——它是为了在Node里模拟浏览器的FileReader API,但这个包依赖的bufferjs/concat是个早就被废弃的模块,现在根本没人维护,这就是你报错的根源。而且更重要的是,Node.js服务器端处理上传文件时,直接用xlsx就能搞定,不需要额外的FileReader。
问题根源
浏览器里的FileReader是用来读取本地用户上传的文件,但在Node.js服务器上,当文件上传过来时,它已经是以Buffer或者可读流的形式存在了,xlsx模块本身就支持直接读取这些格式,完全绕开了FileReader的需求。那个npm的FileReader包不仅多余,还带了过时的依赖,导致你遇到这个错误。
修正后的代码
直接用xlsx读取上传文件的Buffer就行,假设你用的是类似multer的上传中间件,上传的文件Buffer存在body.file里(或者req.file.buffer,取决于你的上传处理逻辑):
const xlsx = require('xlsx'); // 直接读取文件Buffer,xlsx原生支持这种类型 const workbook = xlsx.read(body.file, { type: 'buffer' }); // 示例:获取第一个工作表并转为JSON const firstSheetName = workbook.SheetNames[0]; const worksheet = workbook.Sheets[firstSheetName]; const excelData = xlsx.utils.sheet_to_json(worksheet); console.log('解析后的Excel数据:', excelData);
后续步骤
- 先卸载那个没用的
FileReader包,避免后续依赖混乱:
npm uninstall FileReader
- 确保你的上传中间件(比如multer)正确解析了上传文件,拿到的是Buffer类型的文件内容
- 用上面的代码替换原来的FileReader逻辑,直接让xlsx处理Buffer
这样就能彻底解决bufferjs/concat找不到的问题,同时代码更简洁高效。
内容的提问来源于stack exchange,提问作者Paul Martin
相关产品推荐
相关产品推荐

