我收到了错误:
'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中模块文件夹。
任何想法如何解决这个甚至我应该在哪里寻找?我已尝试升级到最新版本的Angular 2 CLI并将项目迁移到新版本。
答案 0 :(得分:0)
此错误的一个原因可能是以下(但是,这不会解释您的问题仅在添加上述代码后发生,并且您没有提到您正在使用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库。这将导致上述错误。