2017-01-31 4 views
2

Ich habe immer den Fehler:Uncaught Error: Inkompatibel SockJS! - Angular 2 CLI

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

Ich war nicht immer diese Fehlermeldung, bis ich den folgenden Code zu einem Dienst hinzugefügt:

*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 
    }); 
} 

Das seltsame Problem ist, dass ich don Erhalte den obigen Fehler nicht bei jeder Ausführung. es erscheint zufällig.

Ich habe keine Ahnung, wo ich suchen oder wie ich dies debuggen soll - oder ob das überhaupt etwas mit dem Angular 2 CLI zu tun hat. Die Forschung zeigt etwas an, das mit den Abhängigkeiten von Webpack innerhalb der Angular 2 CLI zu tun hat, aber ich kann es nicht genau lokalisieren. Meine package.json-Datei enthält kein Webpack (oder SockJS), aber Webpack befindet sich in meinem Node Modules-Ordner.

Irgendwelche Ideen, um das zu lösen oder sogar, wo ich suchen sollte? Ich habe versucht, auf die neueste Version des Angular 2 CLI zu aktualisieren und das Projekt auf die neue Version zu migrieren.

+0

Bitte beachten Sie, dass das Rechtschreibfehler von "Incompatibil" im Titel absichtlich war, da es der genauen Ausgabe des Fehlers entspricht. Da das Fehlerprotokoll diesen Rechtschreibfehler aufweist, kann die Korrektur der Rechtschreibung es für Personen schwierig machen, diese Frage zu finden. – fila

+0

hast du eine lösung dafür gefunden? – IamStalker

Antwort

0

Ein Grund für diesen Fehler könnte der folgende sein (dies würde jedoch nicht für die Tatsache verantwortlich sein, dass Ihr Problem erst nach dem Hinzufügen des oben erwähnten Codes auftrat und Sie nicht erwähnt haben, dass Sie WebSockets verwenden - so könnte dies sein Lösen Sie Ihr Problem nicht, aber hoffentlich das von anderen):

Wenn Ihre Anforderungen über einen HTTP-Server weitergeleitet werden, bevor sie auf dem Anwendungsserver ankommen, müssen Sie sicherstellen, dass der HTTP-Server die WebSockets-Anforderungen korrekt übergeben kann.

Wenn Apache HTTP-Server verwenden, können Sie dies so (unter der Annahme, dass/myapp/ws ist Ihr WebSockets Endpunkt) konfigurieren:

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

Damit dies funktioniert, müssen Sie sicherstellen, dass das proxy_wstunnel Modul installiert und aktiviert:

sudo apt-get update 
sudo apt install apache2 

sudo a2enmod proxy_http 
sudo a2enmod proxy_wstunnel 

Hinweis: Wenn Sie das nicht richtig installiert haben, wird Spring Websockets versuchen, auf andere Optionen zurückzugreifen. In diesem Fall wird ein IFrame hinzugefügt, der wiederum eine andere socksjs-Bibliothek lädt als die, die Sie in Ihrer Anwendung verwenden. Und das wird den oben genannten Fehler verursachen.