Клиент Angular5 + signalr выдает ошибку Syntax Error JS

Я очень новичок в Angular, пожалуйста, ответьте на возможно глупый вопрос.

Я пытаюсь разместить сервер asp.net Kestrel на локальном хосте: 5000, который предоставит службу SignalR для отчетов о ходе выполнения. Веб-сайт, который я создаю с помощью Angular 5, должен подключаться к этому (веб-сайт будет вызываться либо через localhost: 4200, либо просто путем открытия файла://.....etc../index.html).

Я установил пакет @aspnet/signalr-client через NPM. Я не делал никаких других ручных модификаций в своем проекте (никаких полифилов или чего-то еще).

Затем я отредактировал .TS моего основного компонента, чтобы включить

import { HubConnection } from '@aspnet/signalr-client';

который до сих пор работает нормально. Но потом я добавил приватную переменную

private _hubConnection: HubConnection;

и в функции ngOnInit() я вызываю

    this._hubConnection = new HubConnection('/progress');

и теперь при доступе к веб-сайту в Internet Explorer 11 возникает ошибка, а именно Ошибка: синтаксическая ошибка. Если я правильно читаю отладчик, он, похоже, находится в signalr-client/dist/src/HttpContext.js в каком-то коде, например

eval("\n// Copyright (c) .NET Foundation. All rights reserved.\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) {
... etc ...

Я совершенно не знаю, что может быть причиной этого. Нужно ли мне вносить какие-либо другие ручные изменения в мой проект, включать какие-либо другие файлы или что-то подобное? Может быть, он не может подключиться к моему серверу прогресса SignalR и, следовательно, выдает эту странную ошибку или что-то в этом роде?

Спасибо


person Bogey    schedule 23.11.2017    source источник
comment
Вы пытались передать полный URL-адрес концентратора SignalR, а не просто '/progress' при обновлении HubConnection?   -  person R. Richards    schedule 23.11.2017


Ответы (2)


Вы размещаете свое приложение и свой signalR в двух разных приложениях, поэтому вам нужно указать абсолютный URL-адрес вашего приложения signalR.

 this._hubConnection = new HubConnection('http://localhost:5000/signalr/progress');

Номер порта вашего веб-приложения отличается от вашего приложения signalR, не забудьте разрешить CORS, потому что вы получите междоменную ошибку с Chrome и Firefox.

person Nicolas Law-Dune    schedule 23.11.2017
comment
Спасибо за предложение - к сожалению, все та же ошибка. Видя, что это на самом деле выдает ошибку JS, а не просто не подключается или что-то в этом роде, я бы предположил, что что-то более структурное должно быть неправильным ?! - person Bogey; 23.11.2017
comment
Я думаю, что ваш signalR настроен неправильно, проверьте это: ошибка во время запроса на согласование"> stackoverflow.com/questions/47138223/ - person Nicolas Law-Dune; 24.11.2017

Ах, похоже, это несовместимость стандартного пакета с IE11, см.

https://github.com/aspnet/SignalR/issues/777

Я попытаюсь обойти это через

import { HubConnection } from '@aspnet/signalr-client/dist/browser/signalr-clientES5-1.0.0-alpha2-final.js';
person Bogey    schedule 23.11.2017