【问题标题】:vscode extension: deprecation warning `Buffer()`, how to diagnosevscode 扩展:弃用警告`Buffer()`,如何诊断
【发布时间】:2020-12-19 18:04:54
【问题描述】:

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

(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.

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

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

我的扩展在开发模式下遇到了这个问题。
但是我的old extension 在开发模式和发布版本中也有同样的问题。
仅在发布版本中不报告警告。

很抱歉没有包含一个最小的、可重现的示例。

更新:

在我的评论突出显示的最新版本中,我修复了块评论突出显示。至少我已经修复了我的问题。

(node:4904) [DEP0005] DeprecationWarning 在极少数情况下不断破坏我的扩展程序,这发生在我的所有环境中。

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

我运行的操作系统:

  • Windows 10
  • Ubuntu 20 LTS

在两个操作系统上,我都运行 nvm 来管理节点和 npm 版本。 我目前有 2 台计算机都使用命名操作系统双启动 两台计算机都出现此问题。

【问题讨论】:

    标签: visual-studio-code vscode-extensions


    【解决方案1】:

    以下是我用来帮助诊断导致 Buffer deprecation 警告的原因的步骤。

    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 to fix)和yauzl 上提出了问题,敦促切换到尚未合并的分叉fd-slicer2PR to fix -考虑投票)。在 vscode 上:buffer warning, yauzl

    我的节点版本:v15.9.0

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

    【讨论】:

    • 您好,这真的很有帮助。我从fd-slicer 收到了同样的弃用警告。
    【解决方案2】:

    我在尝试创建我的第一个扩展程序时遇到了类似的事件。因此,启动命令面板 - Ctrl + Shift + P 并选择 >Developer: Reload Window 会有所帮助。

    【讨论】:

    • 感谢您的回复!但是,当我在 [Extension Development Host] 中执行 > Developer: Reload Window 时,我在主 VS Code 实例中收到相同的警告。当我在主 VS Code 实例中执行该命令时,我关闭了 [Extension Development Host]。这使调试控制台清晰但不能解决错误。使用Ctrl + Shift + F5 重新启动[扩展开发主机] 让警告保持不变。
    【解决方案3】:

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

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

    之后,只需重新启动 IDE 并再次尝试启动 VS 代码!希望这会有所帮助。

    【讨论】:

    • 您好,感谢您的提问!但是,您描述的修复与我无关。在一些新的个人发现之后,我更新了这个问题。我希望这是对其他人的修复,谢谢!
    猜你喜欢
    • 2021-01-09
    • 1970-01-01
    • 2017-09-30
    • 2020-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-06
    相关资源
    最近更新 更多