通过 npm 安装时创建 signalr.js 文件

creation of signalr.js file, when installing through npm

我正在尝试按照 this 文档使用 signalr 设置项目的客户端。 所以我有一个 asp.net 核心 mvc 项目,我从 运行 nuget 包管理器命令行中的这些命令开始:

npm init -y
npm install @microsoft/signalr

执行此操作后,文档中包含以下文本:

npm installs the package contents in the node_modules\@microsoft\signalr\dist\browser folder. 
Create a new folder named signalr under the wwwroot\lib folder. Copy the signalr.js file to the 
wwwroot\lib\signalr folder.

这部分让我非常困惑。我不知道 node_modules\@microsoft\signalr\dist\browser 目录在哪里,我找不到任何名为 node_modules 的东西。然后它还说我应该复制 signalr.js file,这也令人困惑。我在项目中的任何地方都没有这样的文件,我不知道从哪里复制。

在此之后,文档说了另一件事,这很令人困惑:

Reference the SignalR JavaScript client in the <script> element. For example:
     <script src="~/lib/signalr/signalr.js"></script>

这对我来说意义不大。我应该把这个标签放在哪里?在我项目的所有视图文件中?也许在我本地电脑上的 word 文件中?

我真的希望有人能帮助清理这些东西。

I don't know where node_modules@microsoft\signalr\dist\browser directory is, I cannot find anything called node_modules.

您可以运行npm list -g查看安装了哪些全局库以及它们所在的位置。

您可以运行npm list查看当前位置安装的非全局库。

我想你用的是Windows系统。如果你安装 signalr 包 globally,你会发现安装的文件夹在:%USERPROFILE%\AppData\Roaming\npm\node_modules.

如果您安装非全局库,您将在解决方案文件夹中找到已安装的文件夹(不是 项目文件夹)。

例如,我在D:\repos\MvcProjct中创建解决方案,node_modules\@microsoft\signalr\dist\browser将存在于其中(D:\repos\MvcProjct\node_modules\...)。

更多详情可参考以下link:

This does'nt make to much sense to me. Where should I put this tag? In all view files in my project? perhaps in a word file on my local pc?

这取决于你。如果你想全局使用这个js文件,你可以把它放在_Layout.cshtml:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>@ViewData["Title"] - Dotnetcore5</title>
    <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
    <link rel="stylesheet" href="~/css/site.css" />
</head>
<body>
    <header>
        //...
    </header>
    <div class="container">
        <main role="main" class="pb-3">
            @RenderBody()

        </main>
    </div>    
    <footer class="border-top footer text-muted">
        //..
    </footer>
    <script src="~/lib/jquery/dist/jquery.min.js"></script>
    <script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
    <script src="~/js/site.js" asp-append-version="true"></script>
 //add here....
    <script src="~/lib/signalr/signalr.js"></script>
    
    @await RenderSectionAsync("Scripts", required: false)

</body>
</html>

如果只想在特定视图中使用,直接放在特定视图中即可:

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