【问题标题】:DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), ... methods insteadDeprecationWarning:由于安全性和可用性问题,不推荐使用 Buffer()。请改用 Buffer.alloc(), ... 方法
【发布时间】:2019-11-25 13:37:49
【问题描述】:

我有一个 angular 项目,最近我使用以下命令向它添加了 angular-universal:

ng add @nguniversal/express-engine --clientProject {{ name of your project }}

构建并运行它:

npm run build:ssr && npm run serve:ssr

这样做后我遇到了很多错误,但我设法让它工作,但是当我访问我的主页时,它会将以下内容写入控制台:

(node:44714) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.
ERROR [Error]
ERROR [Error]

每次我刷新页面时它都会再次打印ERROR [Error],但没有任何详细信息,请注意我的代码中没有任何new Buffer(),我已经按照堆栈溢出的建议解决了这个问题,但没有运气好,有人能帮忙弄清楚是什么原因造成的吗?


我已经通过删除 TranslateService 解决了 ERROR [Error],但仍然有 deprecationWarning

【问题讨论】:

  • 尝试在运行server.js文件时将--trace-warnings--trace-deprecation选项传递给nodejs(你需要修改serve:ssr脚本)。这应该可以帮助您确定哪些软件包会导致问题
  • @David 我没有 serve:ssr 脚本,我所做的只是 yarn run serve:ssr ,我尝试像 yarn run serve:ssr ----trace-warnings 和 yarn run 一样运行它 - -trace-warnings serve:ssr 但没有任何变化,控制台上也没有打印任何内容,你能建议如何运行跟踪吗?
  • serve:ssr 通常是在package.json 中定义的脚本。把选项传给yarn没用,需要传给nodejs
  • @David 谢谢它现在工作我有一个由 server.js 引起的异常
  • @MadhavanSundararaj 检查上面的 cmets 并尝试调试异常,如果你有一份我可能可以提供帮助

标签: angular angular-universal


【解决方案1】:

如果您在代码中使用 Buffer(),只需将其替换为:

new Buffer(number) // Deprecated 
Buffer.alloc(number) // New

或者

new Buffer(string) // Deprecated 
Buffer.from(string) // New

如果您在任何地方使用Buffer(),您必须执行以下操作:

1) 搜索所有应用依赖项(您可以通过单击当前使用的 IDE 中的搜索图标并输入 Buffer() 来使用搜索工具)

2) 无论您在模块或依赖项中的何处找到Buffer(),只需如上所述替换它即可

【讨论】:

  • 我已经按照你的建议做了我能看到缓冲区的唯一地方是 package-lock.json 文件
  • @KhaledJamal 请告诉我你的 nodejs 和 npm 版本
  • node --version 返回 v10.15.1 和 npm --version 6.8.0
  • 我建议您将 nodejs 和 npm 都更新到最新版本,然后转到您的项目并删除 node_modules 文件夹并通过npm install重新安装它
【解决方案2】:

我收到了同样的警告,它似乎根本没有影响任何事情。 我做了查找和替换,但猜猜看,我的代码(无论是在源代码中还是在编译的包中)都没有与 Buffer() 匹配的内容,所以我对此很好奇。 我有最新的 LTS 版本的节点 (12.14.1) 但我将 npm 升级到 6.13.6 另外我不得不说,如果部署到我的生产或开发服务器,客户端版本不会产生该输出,它只会在通过 iisnode 提供 SSR 版本时发生,我不知道这是否有帮助。

【讨论】:

    猜你喜欢
    • 2021-02-07
    • 2019-06-28
    • 2021-10-06
    • 2019-01-28
    • 2019-08-07
    • 1970-01-01
    • 2019-02-09
    • 2021-06-18
    • 2017-12-07
    相关资源
    最近更新 更多