vscode 扩展:弃用警告 `Buffer()`,如何诊断

Tes*_*ijn 12 visual-studio-code vscode-extensions

我正在将我的评论荧光笔重建为一个新的扩展。
但是,我现在遇到了一个问题,我收到以下警告:

(node:4904) [DEP0005] DeprecationWarning:
  Buffer() is deprecated due to security and usability issues.
  Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.
Run Code Online (Sandbox Code Playgroud)

到目前为止,我可以在我的扩展中找到我从未使用过的功能,Buffer()
我认为它来自vscode模块。

当警告发生时,块注释突出显示停止工作。

对于我在开发模式下的扩展来说,这个问题正在打破。
但是,我的旧扩展在开发模式和发布版本中存在相同的问题。
仅在发布版本中不报告警告。

我很抱歉没有包含一个最小的、可重复的例子。

更新:

在我的评论突出显示的最新版本中,我修复了块评论突出显示。至少我已经修复了我最后损坏的东西。

在(node:4904) [DEP0005] DeprecationWarning不断打破罕见的情况下我的延长,这种情况发生在我所有的环境。

重新启动 vscode 或重新启动操作系统有时可以修复它。我注意到当我的扩展程序损坏时,其他扩展程序也会中断。

我运行的操作系统:

  • 视窗 10
  • Ubuntu 20 LTS

在两个操作系统上,我都运行 nvm 来管理 node 和 npm 版本。我目前有 2 台计算机都使用指定的操作系统进行双启动 两台计算机上都出现了问题。

Mar*_*ark 6

以下是我用来帮助诊断导致缓冲区弃用警告的原因的步骤。

  1. 卸载您的扩展。此后您可能需要重新加载 vscode。
  2. 终端:export NODE_OPTIONS=--throw-deprecation
  3. 终端:(code-insiders --install-extension arturodent.find-and-transform
    或者code --install-extension arturodent.find-and-transform如果不在 Insiders 上)

(替换为在 package.json 中找到的扩展 ID)

这应该重新安装扩展,并带有有关弃用警告的堆栈跟踪。

缓冲区弃用警告

显然,如果您的扩展直接使用,new Buffer()您可以修复它。

如果您导入/需要一个使用的扩展,new Buffer()您有几个选择:寻找替代方案、分叉它或向该存储库提出问题。

就我而言,以上都不是问题。你可以看到这fd-slicer 就是问题所在。这是yauzl的依赖项。 yauzl由 vscode 本身使用,而不是由我或我的扩展的依赖项使用。

有一些问题被提交fd-slicer(维护者没有兴趣修复这个问题,PR 要修复)和yauzl敦促切换到fd-slicer2尚未合并的分叉(PR 要修复- 考虑投票)。在 vscode 上:缓冲区警告,yauzl。

我的节点版本:v15.9.0

对我来说,这个缓冲区警告目前只是一种刺激,幸运的是,它不会影响我的扩展的功能。


小智 1

我希望您能够成功解决这个问题,因为我在在线论坛上没有看到与此类警告相关的很多答案。VS Code 在引用您的节点模块时遇到问题,因为您可能拥有过时的节点版本或双重安装,导致符号链接损坏。这通常可以通过使用brew卸载并重新安装节点几次,然后在损坏的符号链接消失后取消链接并重新链接节点来解决。以下视频有助于解释如何执行此操作。

https://www.youtube.com/watch?v=DAnf4XUUjkg

之后,只需重新启动 IDE 并尝试再次启动 VS code!希望这可以帮助。