繁体   English   中英

ASP.NET Core 2.1 SignalR 未定义

[英]ASP.NET Core 2.1 SignalR is not defined

这是我的聊天 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 chat.js是:

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

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

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

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

您还可以使用 Visual Studio 客户端库管理器 (LibMan) 进行下载,如下所示:

  • 解决方案资源管理器中,右键单击该项目,然后选择添加 > 客户端库。

  • Add Client-Side Library对话框中,为 Provider 选择unpkg

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

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

在此处输入图片说明

有关更多详细信息: ASP.NET Core SignalR 入门

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

你在你的HTML中使用它吗?

<!--Reference the SignalR library. -->
<script src="Scripts/jquery.signalR-2.2.1.min.js"></script>

来自: https//docs.microsoft.com/en-us/aspnet/signalr/overview/getting-started/tutorial-getting-started-with-signalr

编辑:

如果使用jquery-signalr,请不要忘记添加jquery依赖项

<!--Reference the jQuery library. -->
<script src="Scripts/jquery-3.1.1.min.js" ></script>
<script src="Scripts/jquery.signalR-2.2.1.min.js"></script>

就我而言,我忘记了 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。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM