版本

no-buffer-constructor

禁止使用 Buffer() 构造函数

重要

此规则在 ESLint v7.0.0 中已弃用。请在 eslint-plugin-n 中使用相应的规则

了解更多

在 Node.js 中,Buffer 构造函数的行为取决于其参数的类型。将来自用户输入的参数传递给 Buffer() 而不验证其类型可能会导致安全漏洞,例如远程内存泄露和拒绝服务。因此,Buffer 构造函数已被弃用,不应使用。请改用生产者方法 Buffer.fromBuffer.allocBuffer.allocUnsafe

规则详情

此规则禁止调用和构造 Buffer() 构造函数。

此规则的 错误 代码示例

在 Playground 中打开
/* eslint no-buffer-constructor: error */

new Buffer(5);
new Buffer([1, 2, 3]);

Buffer(5);
Buffer([1, 2, 3]);

new Buffer(res.body.amount);
new Buffer(res.body.values);

此规则的 正确 代码示例

在 Playground 中打开
/* eslint no-buffer-constructor: error */

Buffer.alloc(5);
Buffer.allocUnsafe(5);
Buffer.from([1, 2, 3]);

Buffer.alloc(res.body.amount);
Buffer.from(res.body.values);

何时不使用

如果您不使用 Node.js,或者您仍然需要支持缺少 Buffer.from 等方法的 Node.js 版本,则不应启用此规则。

版本

此规则在 ESLint v4.0.0-alpha.0 中引入。

延伸阅读

资源

更改语言