【问题标题】:Uncaught Error: Incompatible SockJS! - Angular 2 CLI未捕获的错误:不兼容的 SockJS! - 角 2 CLI
【发布时间】:2017-01-31 06:26:32
【问题描述】:

我收到了错误:

'Uncaught Error: Incompatibile SockJS! Main site uses: "1.1.1", the iframe: "1.0.1".'

在将以下代码添加到服务之前,我没有收到此错误:

*COMPONENT*
this.dataService.getData(1,null).subscribe(
    result => this.allSCATSsites = result.json(),
    () => console.log("Failed..."),
    () => this.processSites()
);

*SERVICE*
getData(functionindex: number, dataarray) {
    let headers = new Headers();
    headers.append('Content-Type', 'application/json');
    return this.http.post(url, sentArray,{
        headers: headers
    });
}

奇怪的问题是我在每次执行时都没有收到上述错误。它看起来是随机的。

我不知道在哪里查看或如何调试它 - 或者这是否与 Angular 2 CLI 有任何关系。研究表明与 Angular 2 CLI 中的 Webpack 依赖关系有关,但我似乎无法确定它 - 我的 package.json 文件中没有 Webpack(或 SockJS),但 Webpack 在我的 Node Modules 文件夹中。

任何想法如何解决这个问题,甚至我应该在哪里寻找?我已经尝试升级到最新版本的 Angular 2 CLI 并将项目也迁移到新版本。

【问题讨论】:

  • 请注意,标题中“不兼容”的拼写错误是故意的,因为它与错误的确切输出相匹配。由于错误日志中存在拼写错误,因此更正拼写可能会使人们难以找到此问题。
  • 你找到解决方案了吗?

标签: angular webpack webpack-dev-server sockjs


【解决方案1】:

此错误的一个原因可能如下(但是,这不能说明您的问题仅在添加上述代码后才发生,并且您没有提及您正在使用 Websockets - 所以这可能不是解决您的问题,但希望其他人的问题):

如果您的请求在到达应用服务器之前通过 HTTP 服务器路由,您必须确保 HTTP 服务器让 Websockets 请求正确传递。

当使用 Apache HTTP 服务器时,你可以这样配置(假设 /myapp/ws 是你的 websockets 端点):

ProxyPassMatch ^/myapp/ws/(.*)/websocket$ ws://localhost:8080/myapp/ws/$1/websocket

为此,您必须确保已安装并启用 proxy_wstunnel 模块:

sudo apt-get update
sudo apt install apache2

sudo a2enmod proxy_http
sudo a2enmod proxy_wstunnel

注意:如果您没有正确安装,那么 Spring Websockets 将尝试回退到其他选项。在这种情况下,将添加一个 IFrame,它再次加载与您在应用程序中使用的不同的 socksjs 库。这会导致上面提到的错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-09
    • 1970-01-01
    • 1970-01-01
    • 2020-10-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-29
    • 2012-07-09
    相关资源
    最近更新 更多