接收弃用警告:使用不带“新”的缓冲区很快就会停止工作

时间:2016-11-16 09:27:40

标签: node.js buffer deprecation-warning

我正在编写快速服务器,自从我将节点升级到7.1.x版本后,我收到了以下警告:

  

(node:23488)DeprecationWarning:很快就会使用不带new的缓冲区   停止工作。使用new Buffer(),或者最好Buffer.from(),   而是Buffer.allocUnsafe()Buffer.alloc()

我不记得在任何地方使用Buffer。我只知道我在应用程序中初始化了log-file-rotator模块,这可能是唯一与缓冲区有关的模块。

const fileStream = require('file-stream-rotator')

const LOG_PATH = path.join(__dirname, '..', 'logs')
const PORT = process.env.npm_package_config_port || 4000

let logFileStream = fileStream.getStream({
  date_format: 'YYYYMMDD',
  filename: path.join(LOG_PATH, 'access-%DATE%.log'),
  frequency: 'daily',
  verbose: false
})

但是,查看their source repo,我没有注意到Buffer来电的任何陈述。

为什么会出错,以及如何解决?

1 个答案:

答案 0 :(得分:2)

我在OSX上有一个有限的grep。我使用HomeBrew安装了ack

brew install ack

然后运行以下搜索Buffer(...)之前没有new的实例:

ack --js '(?<!new) Buffer\(' --noignore-dir=node_modules/

您也可以输出到文件:

ack --js '(?<!new) Buffer\(' --noignore-dir=node_modules/ > ~/Desktop/buffer.txt

然后检查可能触发该警告的Buffer的使用,例如:

var a = Buffer(something)

如果您有包含问题的软件包列表,那么您可以通过以下方式找到相应的软件包:

npm ls

这将打印出包树,您可以在其中找到可能需要更新的主要包或提交的问题。