繁体   English   中英

WebStorm - 如何在 npm 包中找到问题的根源? (节点:36378)[DEP0005] 弃用警告

[英]WebStorm - How to find source of a problem inside a npm package? (node:36378) [DEP0005] DeprecationWarning

我在过去 6 个月内开始收到此错误,可能是因为更新了node.js

(节点:36378)[DEP0005] 弃用警告:由于安全和可用性问题,不推荐使用 Buffer()。 请改用 Buffer.alloc()、Buffer.allocUnsafe() 或 Buffer.from() 方法。

我已经确定了导致此警告的特定包: https : //github.com/irhc/js-logging

它不再维护,所以我必须深入挖掘并找到这个问题的根源。 但是我的 IDE ( WebStorm ) 没有显示任何代码行。 我还搜索了源代码,但找不到在任何地方使用的Buffer() 我怎样才能找到这个问题的根源?

顺便说一句,我也在同一个文件中使用了fs ,其中实际上有Buffer() ,但是注释掉依赖项和相关函数并没有消除警告。

编辑:感谢@ix3 的建议,我降低了问题的范围

  • 在节点服务器中运行时不会发生这种情况
  • 从终端https://prnt.sc/lh012c运行 mocha 测试时不会发生这种情况
  • Webstorm运行 mocha 测试时会发生这种情况: https : Webstorm

所以问题出在Webstorm+Mocha+Node+js-logging的交互上。 他们每个人都可以完美地单独工作,但是当他们在一起时我会收到此错误。

js-logging不再维护的事实使它成为一个明智的首选。 但是,如果它没有调用new Buffer (并且它的任何依赖项都没有),那么一定是其他东西触发了该警告消息。 你是如何“查明”这个包的问题的?

您可能想尝试运行带有调试器(例如 Chrome 内置的调试器)的程序。 您可以按照Paul Irish 在此处解释的说明执行此操作 另请注意,Chrome 70 现在 提供ndb

您还可以尝试“grepping”整个源树(包括node_modules )以获取“新缓冲区”。 有多种方法可以做到这一点,它们因操作系统而异。 例如,在像 Linux 这样的 POSIX 系统上,您通常可以执行类似grep -drecurse "new Buffer" . 从项目的根文件夹中搜索该树中所有文件中所有出现的该字符串。

最后,值得重申的是,您列出的消息不是错误,而只是警告 因此,它不会导致任何不同的行为。 换句话说,修复它只会让消息消失; 它不会显着改变您的程序的行为。 当然,您仍然应该努力解决它,因为警告告诉您在未来版本的节点中,您现在拥有的代码将停止工作。

编辑:查看您共享的无音频视频,看起来您正在做您的问题没有提到的各种事情,例如

  • 你正在用 TypeScript 编写(当你使用纯 JavaScript 时会发生什么?)
  • 您只是在 IDE 中运行测试(当您从命令行运行它们时会发生什么?)

您很有可能使用旧版本的ts-node ,它使用Buffer构造函数直到大约 2018 年 5 月

旁白:要跟踪依赖项何时发生变化(尤其是 .... 的依赖项的依赖项),我强烈建议使用yarn或至少使用package-lock.json ,否则您的应用程序完全有可能在某一天而不是下一天构建和工作由于上游的变化。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM