2017-01-31 5 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 
    }); 
} 

Странная проблема что я дон Получите указанную выше ошибку при каждом выполнении. он кажется случайным.

Я понятия не имею, где искать или как отлаживать это - или если это даже имеет отношение к Угловому 2 CLI. Исследование указывает на то, что связано с зависимостями Webpack в интерфейсе Angular 2 CLI, но я не могу его точно определить - в моем файле package.json нет Webpack (или SockJS), но Webpack находится в моей папке Modules.

Любые идеи, как решить эту проблему или даже где я должен искать? Я попытался перейти на последнюю версию CLI Angular 2 и перенести проект в новую версию.

+0

Обратите внимание, что орфография «Incompatibile» в заголовке была преднамеренной, так как она соответствует точной выходу ошибки. Поскольку в журнале ошибок есть эта орфографическая ошибка, исправление орфографии может затруднить поиск человеком этого вопроса. – fila

+0

Вы нашли решение для этого? – IamStalker

ответ

0

Одной из причин этой ошибки может быть следующее (однако это не учитывает тот факт, что ваша проблема возникла только после добавления упомянутого выше кода, и вы не указали, что используете веб-узлы, поэтому это может не решите свою проблему, но, надеюсь, и других):

Если у вас есть ваши запросы, направляемые через HTTP-сервер, прежде чем они прибудут на сервер приложений, вы должны убедиться, что HTTP-сервер разрешает запросы веб-камер правильно проходить.

При использовании сервера 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 

Примечание: Если вы не установили, что правильно, то весна WebSockets будет попробовать запасной вариант для других вариантов. В этом случае будет добавлен IFrame, который снова загружает другую библиотеку socksjs, чем тот, который вы используете в своем приложении. И это приведет к ошибке, упомянутой выше.