首页 > 解决方案 > 迁移到 Angular 7 后缓冲区未定义错误

问题描述

我正在将 Angular 5 应用程序迁移到版本 7,并且遇到了一些尝试使用 Buffer 全局的现有代码的问题。

有问题的代码来自使用全局的btoa库。

在我迁移的 Angular 7 应用程序中,当我尝试调用从该库导出的 btoa 函数时,我得到ReferenceError: Buffer is not defined并被抛出。

然而,这在我的 Angular 5 应用程序中一切正常。

这里会发生什么?我假设它与角度 CLI 的变化有关,也许是 webpack 以某种方式捆绑的方式?

我在这里看到一个类似的问题谈论相关问题,一个建议是安装缓冲包,我尝试过,但对我的情况没有任何影响。

谢谢

标签: angular

解决方案


角度版本 7.2

  1. 安装缓冲区

$npm 安装缓冲区

  1. 安装节点

$npm i @types/节点

  1. 然后将“节点”添加到您的 tsconfig.app.json 而不是 tsconfig.json

     "compilerOptions": {
        "outDir": "../out-tsc/app",
        "module": "es2015",
        "types": ["node"]
      },
    

确保

"typeRoots": [
  "node_modules/@types"
],

在你的 tsconfig.json

4.将 global.Buffer 添加到您的 polyfills.ts

(window as any).global = window;
(window as any).global.Buffer = (window as any).global.Buffer || require('buffer').Buffer;

推荐阅读