Angular 6 - browser-crypto.js:3 Uncaught ReferenceError: global is not defined

Posted

技术标签:

【中文标题】Angular 6 - browser-crypto.js:3 Uncaught ReferenceError: global is not defined【英文标题】: 【发布时间】:2018-12-25 02:00:54 【问题描述】:

我正在实现 socketjs。但是我遇到了以下错误。

下面是我正在使用的 socket 和 stomp 包。

import * as SockJS from 'sockjs-client';
import * as Stomp from 'stompjs/lib/stomp.js';

提前致谢。

这是我的角度代码-

import * as Socket from 'socket.io-client';
import * as Stomp from 'stompjs/lib/stomp.js';

initializeWebSocketConnection2()

let ws = new Socket(this.serverUrl);

this.stompClient = Stomp.over(ws);
let that = this;
this.stompClient.connect(, function(frame) 


   that.stompClient.subscribe("/test", function(message) 
        if(message.body) 
          console.log(message.body);
         window.location.reload(); 
        
 );


   that.stompClient.subscribe("/operation", function(message) 
        if(message.body) 
          console.log(message.body);
          window.location.reload();

        
 );

);

【问题讨论】:

【参考方案1】:

在 index.htmlhead 中添加以下 sn-p 解决了我的问题 -

<script type="application/javascript">
  var global = window;
</script>

参考。 https://github.com/stomp-js/ng2-stompjs/issues/70

【讨论】:

【参考方案2】:

添加以下代码对我有用

  <script>
      var global = window; // fix global is undefined in socketjs-client
  </script>

【讨论】:

【参考方案3】:

在你的 polyfills.ts 中添加这个

(window as any).global = window

首先你需要通过打字安装socket-client

npm install --save @types/socket.io

然后你可以像这样在你的组件或服务中导入socket.io-client

import * as Socket from 'socket.io-client';

像这样更改你的代码

let ws = Socket(this.serverUrl);

【讨论】:

@Challappan - 相同的错误 Uncaught ReferenceError: global is not defined at Object../node_modules/socket.io-parser/binary.js (binary.js:10) at webpack_require (bootstrap:76) 在 Object../node_modules/socket.io-parser/index.js (index.js:9) 在 webpack_require (bootstrap:76) 在 Object../node_modules /socket.io-client/lib/index.js (index.js:7) (window as any).global = window;将此添加到您的代码中并立即检查 让我们continue this discussion in chat。 window as any).global = window; in polyfills.ts 解决了我的问题github.com/angular/angular-cli/issues/… (window as any).global = window;在我的 polyfill.ts 底部也解决了我出现的这个问题,谢谢!

以上是关于Angular 6 - browser-crypto.js:3 Uncaught ReferenceError: global is not defined的主要内容,如果未能解决你的问题,请参考以下文章

Angular JS - 6 - Angular JS 常用指令

Angular 6 有 angular.noop 吗?

如何在 Angular 6 中使用 angular-timelinejs3?

无法将 Angular 从版本 6 降级到 5

从 Angular 5 升级到 Angular 6,Bootstrap 按钮样式没有间距

Angular 6:发送经过身份验证的请求