迁移到Angular 7后未定义缓冲区错误

时间:2019-03-06 10:50:11

标签: angular

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

有问题的代码来自btoa库,该库利用了全局变量。

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

但是,这在我的Angular 5应用程序中都可以正常工作。

这可能是怎么回事?我以为它与角度CLI的更改有关,也许是Webpack捆绑的方式?

我看到了类似的问题here,其中涉及相关问题,一个建议是安装缓冲区软件包,我尝试过,但这对我的情况没有影响。

谢谢

1 个答案:

答案 0 :(得分:1)

Angular ver 7.2

1)安装缓冲区

$ npm安装缓冲区

2)安装节点

$ npm i @类型/节点

3)然后将“节点”添加到您的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;