vscode扩展`Buffer()`警告

时间:2020-08-31 15:37:43

标签: visual-studio-code vscode-extensions

您好,我正在将注释荧光笔重新构建到新的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在开发模式和发行版本中存在相同的问题。
仅在已发布的版本中不会报告警告。

很抱歉没有提供一个最小的,可重复的示例。

3 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

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

  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)

那应该使用有关弃用警告的堆栈跟踪重新安装扩展。

buffer deprecation warning

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

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

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

fd-slicer(维护者没有兴趣解决这个问题,PR to fix)和 yauzl 上提交了问题,敦促切换到一个没有分叉的 fd-slicer2尚未合并(PR to fix - 考虑投票)。在 vscode 上:buffer warning, yauzl

我的节点版本:v15.9.0

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

答案 2 :(得分:0)

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