工作笔记:node中读取文件流(createReadStream)信息不全

工作中有一个需求是手动维护一个路由文件(项目太大,该文件只维护关键内容--name/key/children),通过node读取该文件内容,设置想要的格式并输出到最终路由文件。通过命令行运行node即可生成文件内容。

由于项目太大,手动维护文件一直在不停地往里面添加路由关键信息。直到有一天,同事告诉我无法运行node命令,报错!!!

经过一番问题排查,初步判定可能是因为文件太大了。打印生成内容发现返回的是undefind。

前几次打印createReadStream中on('data')的data值都发现能访问到结尾,于是,以为是fs.wirteFile()的问题。然后,我在网上查询说需要createReadStream、createWriteStream读写大文件。于是,我准备采用createWriteStream。

结果,问题又来了!!!createReadStream读取的内容不全了。

好吧!只能又在网上去查询关于createReadStream读取内容不全的问题。经过网上多方的资料查询发现,createReadStream在读取文件时,每次都会读取一定长度的内容,也就是说,这个会有大小限制。

于是,我又去官网查看API,发现:createReadStream返回的流(highWaterMark)的默认大小是 64 kb  。我返回目录看了一下文件大小是66Kb!!!好吧,我明白了!

fs.createReadStream(path, { highWaterMark: 100 * 1024 })

这下该够了吧?去重新运行了一下,嘿,可以了!!!

虽然代码改动不大,也还是花费了我将近一个小时才找到原因,并解决!也算是一个经验了!

你可能感兴趣的:(工作笔记,node,vue)