(node:3872) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issue

 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 实例。

例子:

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 错误。

 

你可能感兴趣的:(NodeJs)