【问题标题】:ASP.NET Core 2.1 SignalR is not definedASP.NET Core 2.1 SignalR 未定义
【发布时间】:2019-06-17 19:46:04
【问题描述】:

这是我的聊天 javascript

"use strict";

var connection = new signalR.HubConnectionBuilder().withUrl("/chathub").build();

connection.on("ReceiveMessage", function (message) {
    var msg = message.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
    var encodedMsg = msg;
    var li = document.createElement("li");
    li.textContent = encodedMsg;
    document.getElementById("Messages").appendChild(li);
});

connection.start().catch(function (err) {
    return console.error(err.toString());
});

document.getElementById("Send").addEventListener("click", function (event) {
    var message = document.getElementById("Message").value;
    connection.invoke("SendMessage", message).catch(function (err) {
        return console.error(err.toString());
    });
    event.preventDefault();
});

这是我在使用聊天输入运行页面时遇到的错误:

未捕获的 ReferenceError:未定义 signalR 在 chat.js:3

chat.js 中的第 3 行是:

var connection = new signalR.HubConnectionBuilder().withUrl("/chathub").build();

我从 Visual Studio 添加客户端库下载了 SignalR 客户端库。我现在拥有的是一个名为 jquery.signalR.js 的文件,它是 ASP.NET SignalR Javascript Library 2.4.0。

但是,此错误并没有消失,并且由于某种原因我无法继续。

【问题讨论】:

    标签: javascript jquery asp.net asp.net-core signalr


    【解决方案1】:

    我遇到了同样的问题,并找到了这样的解决方案。您可能需要将 SignalR 添加到您的页面。如果您使用的是主布局,则可以将其添加到那里。

    【讨论】:

    • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
    【解决方案2】:

    您使用了错误的信号器 JavaScript 库。试试https://www.npmjs.com/package/@aspnet/signalr,这对我有用。

    【讨论】:

      【解决方案3】:

      我看到您的应用程序是 ASP.NET Core,但您使用的是 jquery.signalR.js,它实际上是用于 ASP.NET MVCASP.NET CoreSignalR 客户端是signalr.js,它独立于jQuery。您可以从NPM 下载signalr.jsASP.NET Core

      您也可以使用 Visual Studio 客户端 Library Manager (LibMan) 下载,如下所示:

      • Solution Explorer 中,右键单击项目,然后选择 Add > 客户端库。

      • 添加客户端库对话框中,为提供者选择unpkg

      • 对于库,输入@microsoft/signalr@latest,然后选择最新版本
        那不是预览。

      • 如果路径中包含@ 的任何其他内容,则必须将目标位置 更改为wwwroot/lib/signalr。否则不会下载。

      更多详情:Getting started with ASP.NET Core SignalR

      【讨论】:

      • 嗨,有没有不使用 npm 的方法来获取它?我必须在我的机器上安装node js吗?
      • 这就是我在页面中包含的方式,但我仍然收到 Uncaught ReferenceError: signalR is未定义
      • +1 请注意,这个包从 been moved 开始从 @aspnet@microsoft
      【解决方案4】:

      就我而言,我忘记了 sjgnalr.js 和 chat.js 文件的顺序。

        <script src="~/lib/signalr/dist/browser/signalr.js"></script>
          <script src="~/js/chat.js"></script>
      

      我的错误是:

        <script src="~/js/chat.js"></script>
            <script src="~/lib/signalr/dist/browser/signalr.js"></script>
      

      因为我不在乎 js 文件的顺序,所以通常没有定义 SignalR。

      【讨论】:

        猜你喜欢
        • 2019-04-11
        • 1970-01-01
        • 2019-01-24
        • 2023-03-19
        • 2020-11-20
        • 2018-09-07
        • 2019-04-15
        • 2018-11-13
        • 1970-01-01
        相关资源
        最近更新 更多