在 wwwroot - .Net Core 2.2 Signalr 中引用静态 JavaScript 文件时出现问题

Problems referencing static JavaScript files in wwwroot - .Net Core 2.2 Signalr

我无法从 wwwroot 文件夹中引用 signalr 的相关 js 文件。

我需要参考的路径是:

这是我的观点:

@page
<div class="container">
    <div class="row">&nbsp;</div>
    <div class="row">
        <div class="col-6">&nbsp;</div>
        <div class="col-6">
            User..........<input type="text" id="userInput" />
            <br />
            Message...<input type="text" id="messageInput" />
            <input type="button" id="sendButton" value="Send Message" />
        </div>
    </div>
    <div class="row">
        <div class="col-12">
            <hr />
        </div>
    </div>
    <div class="row">
        <div class="col-6">&nbsp;</div>
        <div class="col-6">
            <ul id="messagesList"></ul>
        </div>
    </div>
</div>

<script src="~/wwwroot/lib/@@AspNetCore/signalr/dist/browser/signalr.js"></script>
<script src="~/wwwroot/js/chat.js"></script>

我在浏览器中收到 404:

http://localhost:5005/wwwroot/lib/@AspNetCore/signalr/dist/browser/signalr.js 404 (Not Found)

http://localhost:5005/wwwroot/js/chat.js net::ERR_ABORTED 404 (Not Found)

更新

更改我的脚本路径后,我在浏览器中遇到了这些错误:

http://localhost:5005/lib/@AspNetCore/signalr/dist/browser/signalr.js net::ERR_ABORTED 404(未找到)

未捕获的 ReferenceError:signalR 未定义在 chat.js:3

chat.js 第 3 行:

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

下面有红色波浪线。

<script src="~/wwwroot/lib/@@AspNetCore/signalr/dist/browser/signalr.js"></script>
<script src="~/wwwroot/js/chat.js"></script>

替换成这个

@section Scripts {
    <script src="~/lib/@@AspNetCore/signalr/dist/browser/signalr.js"></script>
    <script src="~/js/chat.js"></script>
}

我建议您更改文件夹名称并像这样替换 url

<script src="~/lib/signalr/dist/browser/signalr.js"></script>
<script src="~/js/chat.js"></script>

勾选这个linktoo

注意:确保您的代码位于页面底部

1st,你应该确保你的应用程序(kestrel 服务器)支持静态文件(app.UseStaticFiles()startup.cs 中的 Configurate 方法),并确保 Microsoft.AspNetCore.Hosting.IHostingEnvironment.WebRoot 是一个文件夹在你的磁盘中(通常它指向$"{Dictory.GetCurrentDirectory()}/wwwroot/")。

2,确保你的 signalr.js 在 WebRoot 文件夹中(这样它就可以使用),并注意 wwwroot 文件夹是你的根路径,例如 ~/ ,这意味着您的 js 文件位于 wwwroot/lib/signalr/signalr.js razor 的 script Tag Helper 的正确路径是 <script src="~/lib/signalr/signalr.js"></script>.