[英]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();
});
这是我在使用聊天输入运行页面时遇到的错误:
未捕获的 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 Core
的signalr.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.