NodeJS运行下列代码时报错
var numbers = Buffer("123456789");
(node:3872) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.
文档:
https://www.nodeapp.cn/deprecations.html#deprecations_dep0005_buffer_constructor
DEP0005:Buffer()构造函数#
类型:仅限文档
由于API可用性问题而不推荐使用该
Buffer()
函数和new Buffer()
构造函数,这可能会导致意外的安全问题。作为替代方案,
Buffer
强烈建议使用以下构造对象的方法:
- [
Buffer.alloc(size[, fill[, encoding]])
] alloc -Buffer
使用 初始化内存创建一个。Buffer.allocUnsafe(size)
-创建Buffer
与未初始化的 内存。Buffer.allocUnsafeSlow(size)
-创建Buffer
与未初始化的 内存。Buffer.from(array)
- 创建Buffer
一个副本array
- [
Buffer.from(arrayBuffer[, byteOffset[, length]])
] from_arraybuffer - 创建一个Buffer
包装给定的arrayBuffer
。Buffer.from(buffer)
- 创建Buffer
副本buffer
。Buffer.from(string[, encoding])
- 创建Buffer
副本string
。
解决实现:
var numbers = Buffer.from("123456789");
不再报错
结论:
new Buffer() 和Buffer()函数已经废弃
类方法:Buffer.from(buffer)#
新增于: v5.10.0
buffer
<Buffer> 一个要拷贝数据的已存在的Buffer
将传入的
buffer
数据拷贝到一个新建的Buffer
实例。例子:
const buf1 = Buffer.from('buffer'); const buf2 = Buffer.from(buf1); buf1[0] = 0x61; // 输出: auffer console.log(buf1.toString()); // 输出: buffer console.log(buf2.toString());
如果
buffer
不是一个Buffer
,则抛出TypeError
错误。