【问题标题】:Angular5 + signalr client throws "Syntax Error" JS errorAngular5 + signalr 客户端抛出“语法错误”JS 错误
【发布时间】:2017-11-24 00:30:04
【问题描述】:

我对 Angular 很陌生,请执行这个可能很愚蠢的问题。

我正在尝试在 localhost:5000 上托管一个 asp.net Kestrel 服务器,它将为进度报告提供 SignalR 服务。 我使用 Angular 5 创建的网站应该连接到此(网站将通过 localhost:4200 调用,或仅通过打开文件://.....etc../index.html)。

我已经通过 NPM 安装了包 @aspnet/signalr-client。我没有对我的项目进行任何其他手动修改(没有 polyfill 或其他可能存在的东西)。

然后我编辑了我的主要组件的 .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 进度服务器,因此引发了这个奇怪的错误或其他问题?

谢谢

【问题讨论】:

  • 在更新 HubConnection 时,您是否尝试过传递 SignalR 集线器的完整 URL,而不仅仅是 '/progress'

标签: angular signalr signalr.client angular5


【解决方案1】:

您将应用和 signalR 托管在两个不同的应用上,因此您必须指定 signalR 应用的绝对 URL。

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

您的网络应用程序的端口号与您的 signalR 应用程序不同,请不要忘记允许 CORS,因为您会在 Chrome 和 Firefox 中遇到跨域错误。

【讨论】:

  • 感谢您的建议 - 不幸的是,仍然是同样的错误。看到它实际上引发了一个 JS 错误,而不是仅仅没有连接或类似的,我会假设一些更结构化的东西一定是错误的?!
  • 我认为您的 signalR 配置不正确,请检查:stackoverflow.com/questions/47138223/…
【解决方案2】:

啊,看来这是标准包与IE11不兼容,见

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

我会尝试绕过这个

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-17
    • 1970-01-01
    • 2017-12-13
    • 1970-01-01
    相关资源
    最近更新 更多