javascript - signalR 未定义,但 signalr.js 已加载到调试器中

标签 javascript asp.net-core signalr

我正在尝试将 SignalR 用于 ASP.NET Core 2.0,但是当我尝试在 View 中实现 SignalR 客户端时,我收到错误消息:尽管自动完成功能在编辑器中运行良好,但变量“signalR”未定义,这是脚本:

<script type="text/javascript">
var _transport = signalR.TransportType.WebSockets; //HERE
var connection = new signalR.HubConnection(`http://${document.location.host}/chat`, {transport: _transport});

var messageInput = document.getElementById('message');
var name = '@User.Identity.Name';
var button = document.getElementById('sendMessage');

connection.on('broadcastMessage', (name, message) => {
    var text = document.createElement('p');
    text.innerHTML = '<strong>' + name + '</strong>' + "&nbsp;:&nbsp;" + message;

    document.getElementById('messageArea').appendChild(text);
});

button.addEventListener("click", event => {    
    connection.invoke('send', name, messageInput.value);
    messageInput.value = '';
    messageInput.focus();
});

connection.start();

我已在我的 _Layout.cshtml 中添加了 signalr.js Environment include in _Layout.cshtml

这是我的 wwwroot 的树结构,我在其中添加了信号器的 .js 文件:

Tree structure in wwwroot

最后,这是 Firefox 中的调试器结构,我可以看到 signalr.js 已加载,jQuery 和 bootstrap 也已加载。

signalr correctly loaded..?

那么为什么“signalR”未定义?我缺少什么?是因为我在项目中手动添加了信号器 javascript 文件吗? (可能...)

最佳答案

我认为您的脚本是在加载 signalr.js 之前执行的。尝试使用事件来执行您的代码。如果我们在文档加载时执行此操作,那么我们将确保它已被定义。

$(document).load(function(){
   // your code here
});

关于javascript - signalR 未定义,但 signalr.js 已加载到调试器中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49385819/

相关文章:

asp.net - asp.net core web api 中是否有类似于 DelegatingHandler 的类?

javascript - 调用 MapSignalR 导致协议(protocol)错误

javascript - 尝试在 nodejs 中重新创建工作的 java 加密方法

javascript - 如何将 vanta 与 nextjs 一起使用?

asp.net-core - .NET Core 上的 X509Certificate2.CreateFromCertFile()

asp.net - SignalR 未触发 "disconnected"事件

ajax - 当 transport=ServerSentEvents 时,SignalR GET 请求 'Cancelled'

javascript - 强制滚动到顶部已更新

javascript - 将 HAML 模板与 Backbone.js 一起使用的最佳策略

azure - 将 FFMpeg 与 Asp .Net Core 和视频流一起使用