javascript - ASP.NET Core 2.1 SignalR 未定义

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

这是我的聊天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();
});

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

Uncaught ReferenceError: signalR is not defined at 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。

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

最佳答案

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

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

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

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

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

  • 如果路径中包含 @,则必须将 Target Location 更改为 wwwroot/lib/signalr。否则不会下载。

enter image description here

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

关于javascript - ASP.NET Core 2.1 SignalR 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54340462/

相关文章:

javascript - 如何在具有全局范围的 Javascript 对象中存储函数

javascript - 如何扩展动态导入的模块?

javascript - 与YouTube播放器类似的视频播放器建议

javascript - 如何在 Jquery 中追加两个变量?

javascript - 从 url 中删除 # 及其值

ASP.NET(MVC)Outputcache和并发请求

c# - UpdatePanel 中的双重 PostBack

javascript - 当我有多个具有相同类的 div 时,如何仅在 div 上执行操作

javascript - Jquery 按钮选择 div 中的所有复选框,按钮选择页面上的所有复选框

asp.net - 在每个请求中获取用户数据