ASP.NET核心 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, "&").replace(/</g, "<").replace(/>/g, ">");
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 。 SignalR
ASP.NET Core 的客户端是 signalr.js
,它独立于 jQuery
。您可以从 NPM:
下载 ASP.NET Core
的 signalr.js
您也可以使用 Visual Studio 客户端 库管理器 (LibMan) 下载,如下所示:
在Solution Explorer中,右击项目,select Add >
客户端库。
在 添加客户端库 对话框中,对于 Provider select unpkg
.
对于库,输入@microsoft/signalr@latest
,select最新版本
那不是预览。
必须将 目标位置 更改为 wwwroot/lib/signalr
如果路径中包含 @
。不然下载不了
对于我的情况,我忘记了 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 javascript 库。试试 https://www.npmjs.com/package/@aspnet/signalr,这对我有用。
我遇到了同样的问题,并找到了这样的解决方案。您可能需要将 SignalR 添加到您的页面。如果您使用的是主布局,您可以在此处添加它。
这是我的聊天记录javascript
"use strict";
var connection = new signalR.HubConnectionBuilder().withUrl("/chathub").build();
connection.on("ReceiveMessage", function (message) {
var msg = message.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">");
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 。 SignalR
ASP.NET Core 的客户端是 signalr.js
,它独立于 jQuery
。您可以从 NPM:
ASP.NET Core
的 signalr.js
您也可以使用 Visual Studio 客户端 库管理器 (LibMan) 下载,如下所示:
在Solution Explorer中,右击项目,select Add > 客户端库。
在 添加客户端库 对话框中,对于 Provider select
unpkg
.对于库,输入
@microsoft/signalr@latest
,select最新版本
那不是预览。必须将 目标位置 更改为
wwwroot/lib/signalr
如果路径中包含@
。不然下载不了
对于我的情况,我忘记了 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 javascript 库。试试 https://www.npmjs.com/package/@aspnet/signalr,这对我有用。
我遇到了同样的问题,并找到了这样的解决方案。您可能需要将 SignalR 添加到您的页面。如果您使用的是主布局,您可以在此处添加它。