2017-01-31 8 views
2

私はエラーを取得されています:私はサービスに次のコードを追加するまで未知のエラー:互換性のないSockJS! - 角度2 CLI

'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の最新バージョンにアップグレードして、プロジェクトを新しいバージョンに移行しようとしました。

+0

"Incompatibile"というタイトルのスペルミスは、エラーの正確な出力と一致するため、意図的であることに注意してください。エラーログにスペルミスがあるため、スペルを修正すると、人々がこの質問を見つけるのが難しくなる可能性があります。 – fila

+0

解決策を見つけましたか? – IamStalker

答えて

0

このエラーの理由の1つは、次のようなものです(ただし、これは、上記のコードを追加した後に問題が発生しただけで、Webソケットを使用しているとは言えませんでした。あなたの問題がアプリケーションサーバーに到着する前にHTTPサーバー経由でルーティングされている場合、HTTPサーバーがWebsocket要求が正しく通過することを確認する必要があります。

のApache HTTPサーバを使用している場合、あなたは(/ myappに/ WSはあなたのWebSocketエンドポイントであると仮定して)そのようにこれを設定できます。このため

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 Websocketは他のオプションにフォールバックします。この場合、アプリケーションで使用するものとは異なるsocksjsライブラリを再度読み込むIFrameが追加されます。そして、これは上記のエラーを引き起こします。

関連する問題