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错误。
本文详细介绍了在NodeJS中Buffer()构造函数的弃用原因及其可能带来的安全和可用性问题,并提供了多种替代方法,如Buffer.alloc(), Buffer.allocUnsafe(), Buffer.from()等,以帮助开发者避免使用已弃用的API。
3517

被折叠的 条评论
为什么被折叠?



