2016-11-16 62 views
2

我写一个Express服务器,因为我升级我的节点7.1.x版本,我已经收到以下警告:接收DeprecationWarning:使用缓冲区没有`new`很快就会停止工作

( node:23488)DeprecationWarning:使用Buffer不用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调用任何声明。

为什么错误,以及如何解决它?

+0

file-stream-rotator的安装版本是什么? npm list file-stream-rotator确保你有最新的 – Dafuck

+0

@Dafuck https://www.npmjs.com/package/file-stream-rotator该项目不再维护,最后一个版本是4个月前。 – hjpotter92

+0

你试过另一个包吗? https://www.npmjs.com/package/stream-rotate或https://www.npmjs.com/package/rotator如果你想保持这个软件包手动更新。 – Dafuck

回答

2

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

brew install ack 

然后跑了不new之前的Buffer(...)实例以下搜索:

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 

这样就会打印出包树,在这里您可以找到其初级包装可能需要更新或问题提交。