在 Angular5 中使用 SockJS 时出错 - “sockjs_client_1.SockJS 不是构造函数”

Posted

技术标签:

【中文标题】在 Angular5 中使用 SockJS 时出错 - “sockjs_client_1.SockJS 不是构造函数”【英文标题】:Error using SockJS in Angular5 - "sockjs_client_1.SockJS is not a constructor" 【发布时间】:2018-03-15 16:06:12 【问题描述】:

我现在正在关注这个tutorial,我已经到了关键点,我必须在我的 Angular5 组件中实例化我的 SockJS-Client。

这是我所做的:

    我执行了以下命令来安装所需的库:

    npm install stompjs
    npm install sockjs-client
    npm install jquery
    

    我像这样将库导入到我的组件中:

    import  Stomp  from 'stompjs';
    import  SockJS  from 'sockjs-client';
    import $ from 'jquery';
    

    最后我尝试实例化 SockJS:

    constructor()
        this.initializeWebSocketConnection();
    
    
    initializeWebSocketConnection()
        let ws = new SockJS(this.serverUrl);  //<- This is the line causing the error
        this.stompClient = Stomp.over(ws);
        let that = this;
        this.stompClient.connect(, function(frame) 
            that.stompClient.subscribe("/chat", (message) => 
                if(message.body) 
                    $(".chat").append("<div class='message'>"+message.body+"</div>")
                    console.log(message.body);
                
            );
        );
    
    

我得到的错误是:

错误错误:未捕获(承诺中):TypeError:sockjs_client_1.SockJS 不是构造函数

我找不到关于这个问题的任何信息。

【问题讨论】:

【参考方案1】:

试试:

import * as SockJS from 'sockjs-client';

import SockJS from 'sockjs-client';

【讨论】:

第一个选项对我有用,非常感谢!!!您能解释一下为什么我的选择会导致该错误吗? 我只能说这是我在另一个使用 SockJS 的示例中看到的导入方式。我想这只是模块如何定义的问题。

以上是关于在 Angular5 中使用 SockJS 时出错 - “sockjs_client_1.SockJS 不是构造函数”的主要内容,如果未能解决你的问题,请参考以下文章

浏览器控制台出错,请求 /sockjs-node/info?t=1555629946494

在 Angular 5 和 AOT-Build 中使用 @angular 编译器时出错

Java Glassfish Spring Sockjs失败:WebSocket握手期间出错:意外的响应代码:500

Websockets + SockJs:使用 stompclient 时,ConnectCallback 未在客户端执行

为啥 SockJS 不兼容?

在进行跨域请求时,如何使用 SockJS 和 STOMP 添加 Spring Security JSESSIONID?