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

2024-03-24

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

(节点:36378)[DEP0005] DeprecationWarning:Buffer() 已被弃用 安全性和可用性问题。请使用 Buffer.alloc(), Buffer.allocUnsafe() 或 Buffer.from() 方法代替。

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

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

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

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

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

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


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

您可能想尝试在附加调试器(例如 Chrome 中内置的调试器)的情况下运行您的程序。您可以按照说明进行操作保罗·爱尔兰在这里解释说 https://medium.com/@paul_irish/debugging-node-js-nightlies-with-chrome-devtools-7c4a1b95ae27。另请注意,Chrome 70 现在offers ndb https://developers.google.com/web/updates/2018/08/devtools#ndb.

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

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

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

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

您很有可能使用的是旧版本ts-node which .

Aside:要跟踪依赖项何时发生变化(尤其是......的依赖项的依赖项),我强烈建议使用yarn https://yarnpkg.com/en/或者至少package-lock.json https://docs.npmjs.com/files/package-lock.json否则,您的应用程序完全有可能在某一天构建并运行,但由于上游的更改而无法在第二天构建和运行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WebStorm - 如何查找 npm 包内问题的根源? (节点:36378)[DEP0005]弃用警告 的相关文章

随机推荐