使用ExcelJS调用readFile时出现Cannot read properties of undefined (reading 'F_OK')错误
解决ExcelJS v4.3.0 + Node.js v14.18.2中readFile的F_OK未定义错误
错误原因
这个错误源于ExcelJS v4.3.0的文件读取逻辑中,尝试访问fs.constants.F_OK,但该属性在Node.js 14.18.2环境下未被正确识别,属于版本兼容问题。
解决方案
方案1:降级ExcelJS到兼容版本
ExcelJS v4.2.1与Node.js 14.x兼容性更好,执行以下命令降级:
npm install exceljs@4.2.1 --save
降级后原代码无需修改即可正常运行。
方案2:绕开readFile,改用load方法读取文件buffer
如果不想调整ExcelJS版本,可以通过Node.js原生fs模块先读取文件buffer,再用ExcelJS的load方法加载,避免触发内部的错误逻辑:
const fs = require('fs'); const path = require('path'); const ExcelJS = require('exceljs'); async function handleExcel() { const wb = new ExcelJS.Workbook(); const fullPath = path.resolve("excelName.xlsx"); // 用原生fs读取文件buffer const fileBuffer = fs.readFileSync(fullPath); // 加载buffer到工作簿 await wb.xlsx.load(fileBuffer); const buffer = await wb.xlsx.writeBuffer(); // 此处可添加对buffer的后续处理 } // 执行并捕获错误 handleExcel().catch(err => console.error(err));
方案3:升级Node.js版本(可选)
如果项目允许,将Node.js升级到v16.x或更高版本,ExcelJS v4.3.0在这些版本中能正常识别fs.constants.F_OK,无需修改代码。
内容的提问来源于stack exchange,提问作者Ligia
相关产品推荐
相关产品推荐

