在节点(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)
清理输出。
在使用库(node-rsa(测试我使用Buffer.isBuffer((传递给它的密钥数据时,我遇到了类似的问题。 这在浏览器中工作正常,但在节点环境中失败,因为isBuffer((返回false。
就我而言,原因是 Node 的 Buffer.isBuffer(( 实现进行了严格的"实例"检查,而我传递了一个浏览器化的 Buffer 对象,该对象没有通过实例检查。
我没有尝试更改node-rsa,而是通过消除对缓冲区库的直接依赖来解决我的问题。
您可以考虑在代码中使用 is-buffer 模块而不是 Buffer.isBuffer((。