Javascript WebStorm-如何在npm包中找到问题的根源?(节点:36378)[DEP0005]弃用警告
我在过去6个月里开始出现这个错误,可能是因为更新了Javascript WebStorm-如何在npm包中找到问题的根源?(节点:36378)[DEP0005]弃用警告,javascript,node.js,logging,buffer,webstorm,Javascript,Node.js,Logging,Buffer,Webstorm,我在过去6个月里开始出现这个错误,可能是因为更新了node.js (节点:36378)[DEP0005]弃用警告:缓冲区()已弃用,因为 解决安全性和可用性问题。请使用Buffer.alloc(), 而是使用Buffer.allocUnsafe()或Buffer.from()方法 我已查明导致此警告的特定程序包: 它不再被维护,所以我必须深入挖掘并找到这个问题的根源。但是,我的IDE(WebStorm)没有显示任何代码行。我还搜索了源代码,没有找到任何地方使用的Buffer()。我怎样才能找到这
node.js
(节点:36378)[DEP0005]弃用警告:缓冲区()已弃用,因为
解决安全性和可用性问题。请使用Buffer.alloc(),
而是使用Buffer.allocUnsafe()或Buffer.from()方法
我已查明导致此警告的特定程序包:
它不再被维护,所以我必须深入挖掘并找到这个问题的根源。但是,我的IDE(WebStorm
)没有显示任何代码行。我还搜索了源代码,没有找到任何地方使用的Buffer()
。我怎样才能找到这个问题的根源
顺便说一句,我还在同一个文件中使用了fs
,该文件实际上包含Buffer()
,但是注释掉依赖项和相关函数并没有消除警告
编辑:由于@ix3的建议,我降低了问题的范围
- 在节点服务器中运行时不会发生这种情况
- 从终端运行mocha测试时不会发生这种情况
- 当从
运行mocha测试时,会发生这种情况:Webstorm
所以问题在于Webstorm+Mocha+Node+js日志的交互。他们每个人都能很好地单独工作,但当他们在一起时,我会犯这个错误 不再维护
js日志记录
,这一事实使它成为一个明智的首选。但是,如果它没有调用新缓冲区
(并且它的任何依赖项都没有),那么一定是其他东西触发了该警告消息。你是如何“查明”那个包裹的问题的
您可能希望在运行程序时附加调试器(例如Chrome内置的调试器)。您可以按照说明进行操作。还要注意的是,Chrome现在已经70了
您还可以尝试将整个源代码树(包括node\u modules
)进行“grepping”以获得“newbuffer”。有多种方法可以做到这一点,它们因操作系统而异。例如,在像Linux这样的POSIX系统上,您通常可以从项目的根文件夹执行类似于grep-drescure“new Buffer”的操作。
来搜索该树中所有文件中出现的字符串
最后,值得重复的是,您列出的消息不是错误,而是警告。因此,它不会导致任何不同的行为。换句话说,修复它只会让信息消失;它不会显著改变程序的行为。当然,您仍然应该努力解决这个问题,因为警告告诉您,在node的未来版本中,您现在拥有的代码将停止工作
编辑:查看您共享的无音频视频,您似乎正在做您的问题未提及的所有事情,例如
- 您使用的是TypeScript(当您使用纯JavaScript时会发生什么情况?)
- 您仅从IDE中运行测试(当您从命令行运行测试时会发生什么情况?)
ts节点
,该节点
旁白:为了跟踪依赖项何时发生变化(特别是……的依赖项的变化),我强烈建议使用或至少在其他情况下,由于上游的变化,您的应用程序完全有可能在某一天而不是下一天构建和工作。为了让其他人能够更好地帮助您,请发布有关您的计划的更多信息。它是NodeJS程序还是在web浏览器中运行?您何时看到您提到的错误消息?您使用的是什么版本的NodeJS?您能否在github存储库或gist中分享一个简单的例子来重现这个问题?问题文件是web应用程序的后端。具体来说,它是日志库的自定义包装器。包装器的目的是将所有日志写入文件.log。这只是一个开始,但遗憾的是,仍然没有足够的信息来帮助您进一步。例如,我不能简单地通过运行
mkdir-tmp重现问题;cd-tmp;npm-init-y;npm安装——保存js日志;node-e“require('js-logging').console().debug('Hello,world');”
(它输出“2018-11-08T10:07:23-0600[eval]:1 Hello,world”很好)。在DebianLinux9.5和NodeJS10.13.0上运行时,我刚刚意识到我已经得出了一个结论。问题似乎不在于node.js或该文件。问题是文件+Webstorm+Chai测试。当我运行应用程序时,此警告不会显示在我的终端中,但在我运行测试时会显示。但只有当我使用这个文件时。我要把它录下来。感谢您的帮助,我拍摄了两个视频,展示了这个问题:您可以看到当我测试数百种东西时会有多么烦人,在我的结果之间,我看到了一个警告。js-logging似乎没有任何依赖关系