首页 > 解决方案 > 文件大小(6003804160)大于可能的缓冲区:节点中的 2147483647

问题描述

尝试在 node.js 中读取文件大小为 5GB 时出现此错误:

错误: RangeError [ERR_FS_FILE_TOO_LARGE]:文件大小(6003804160)大于可能的缓冲区:2147483647 字节

fs.readFile(tempfile, "utf8", function(err, filebuffer) {
      console.log(err,"filebuffer " ,filebuffer);
})

请提出解决方案。

标签: node.jsfs

解决方案


2147483647 字节是 Buffer 在 NodeJS 中可以拥有的最大大小。请注意,此操作将一次将文件的所有内容加载到内存中。您确定要将 5gb 的数据推送到内存中吗?

如果您需要读取比这更大的文件,则需要使用fs.createReadStreamfunction 而不是fs.readFile. fs.createReadStream允许您将文件“拆分”为小(er)块并一次读取一个块。


推荐阅读