在节点(v6.3.1
)中,我正在使用fs.readFileSync(path)
读取文件。
结果(data
)是一个类似缓冲区的对象,当我打印到STDOUT(console.log(data)
)时,我得到:
{"type":"Buffer","data":[45,45,45,...]}
但是打电话给
data instanceof Buffer
或
Buffer.isBuffer(data)
我总是得到false
。
为什么呢?如何测试返回的数据是否为缓冲区?
上下文:我只想避免长时间转储到STDOUT并使用JSON.stringify(data, replacer)
通过缩短缓冲区输出来清理输出。
答案 0 :(得分:0)
我在使用库(node-rsa)时遇到了类似的问题,该库测试了我使用Buffer.isBuffer()传递给它的关键数据。这在浏览器中运行良好,但在Node环境中失败,因为isBuffer()返回false。
在我的情况下,原因是Node的Buffer.isBuffer()实现了严格的'instanceof'检查,并且我传递了一个browserified Buffer对象,它没有通过instanceof检查。
我没有尝试更改node-rsa,而是通过删除对缓冲区库的直接依赖来解决我的问题。
您可以考虑在代码中使用is-buffer module而不是Buffer.isBuffer()。