簡體   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