微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

角度10:未定义缓冲区

如何解决角度10:未定义缓冲区

我需要一些帮助,因为我不知道该怎么办。我必须在Angular项目中使用“ amqplib”。首先,我尝试使用“ amqp-ts”,但是一旦打开浏览器,我就会遇到错误

Buffer is not defined

经过几次尝试,我已切换到“ amqplib”。但是,当我尝试调用函数时,出现错误

Second error

错误发生在行中:

if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {
  module.exports = buffer
} else {
  // copy properties from require('buffer')
  copyProps(buffer,exports)
  exports.Buffer = SafeBuffer
}

同样,Buffer没有定义。

我尝试了这里提到的几种解决方案:Angular 6 Uncaught ReferenceError: Buffer is not defined,最后得到了: 安装的“缓冲”程序包

-在polyfills.ts

declare var require: any;
declare var global: any;

(window as any).global = window;
// @ts-ignore
window.Buffer = window.Buffer || require('buffer').Buffer;
(window as any).process = {
  version: ''
};

-进入index.html

<script>
    var global = global || window;
</script>

尽管如此,他们都没有帮助,但我仍然遇到这些错误:/

解决方法

我正在尝试使用加密浏览器

我也最终使用npm安装了Buffer软件包

然后我得到了一个错误消息:-缓冲区不是构造函数 这就是我所做的-

在polyfills.ts中-

import * as Buffer from '../node_modules/buffer/index';
(window as any).global = window;
(window as any).process = {};
(window as any).process = window;
(window as any).process.browser = true;
(window as any).process.version = '';
(window as any).process.versions = { node: false };
(window as any).global.Buffer = Buffer.Buffer;
,

我不能说以前的 angular 版本,但可以说 angular 11。合并非浏览器 nodejs 函数(如缓冲区)的一种优雅方式是使用 webpack 的 polyfilling 系统

在根目录中创建一个 webpack.config.js 文件并添加以下几行:

module.exports = {
  node: {
    Buffer: true
  }
};

然后在 angular.json 文件中,在 buildtestserve json 下添加 extraWebpackConfig 选项设置

"architect": {
        "build": {
          "builder": "ngx-build-plus:browser","options": {
            "extraWebpackConfig": "webpack.config.js",

更多详情:Buffer is not defined

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。