我正在将Angular 5应用迁移到版本7,并且遇到了一些尝试使用Buffer全局代码的现有代码的问题。
有问题的代码来自btoa库,该库利用了全局变量。
在我迁移的Angular 7应用中,我得到ReferenceError: Buffer is not defined
并在尝试调用从该库导出的btoa函数时被抛出。
但是,这在我的Angular 5应用程序中都可以正常工作。
这可能是怎么回事?我以为它与角度CLI的更改有关,也许是Webpack捆绑的方式?
我看到了类似的问题here,其中涉及相关问题,一个建议是安装缓冲区软件包,我尝试过,但这对我的情况没有影响。
谢谢
答案 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;