我使用 npm 和 agulpfile.js
基本上将 npm 包导出到“wwwroot”下的“lib”文件夹;这是一种享受,每当我更新特定的 npm 包时,如果它在我的gulpfile.js
监视列表中,它就会将内容推送到“lib”文件夹。
我遇到的问题是,我曾经使用手动提取的 ocktokit-rest 副本来查询公共 api 以获取一些 repo 数据。最近这已经停止工作,我假设 GitHub 已经更新了他们的 api,这对我的旧版本 ocktokit-rest 有一些重大更改。因此,考虑到这一点,我使用 npm package.json 安装了 @Ocktokit/rest 版本 18.0.9。然后创建以下目录:
~/lib/@octokit/rest/
根据文档,我需要引用其中的一个index.js
文件。所以因为 Razor 不喜欢在路径中使用 @ 符号,所以我在我的_layout.cshtml
<script src="@Url.Content("~/lib/@octokit/rest/dist-src/index.js")" type="module"></script>
我添加了,type="module"
因为我最初在index.js
文件中的 import 语句中遇到了一些问题。
这是index.js
上述路线的文件内容:
import { Octokit as Core } from "@octokit/core";
import { requestLog } from "@octokit/plugin-request-log";
import { paginateRest } from "@octokit/plugin-paginate-rest";
import { restEndpointMethods } from "@octokit/plugin-rest-endpoint-methods";
import { VERSION } from "./version";
export const Octokit = Core.plugin(requestLog, restEndpointMethods, paginateRest).defaults({
userAgent: `octokit-rest.js/${VERSION}`,
});
这会在 chrome 调试器中引发以下错误:
未捕获的类型错误:无法解析模块说明符“@octokit/core”。相对引用必须以“/”、“./”或“../”开头。
我并不特别喜欢调整@octokit
/ 引用以支持 '../../' 的想法,因为每次我的gulpfile.js
npm push 任务运行时,我都必须手动更改此文件。然而,为了调试,我经历并调整index.js
为如下所示:
import { Octokit as Core } from "../../core";
import { requestLog } from "../../plugin-request-log";
import { paginateRest } from "../../plugin-paginate-rest";
import { restEndpointMethods } from "../../plugin-rest-endpoint-methods";
import { VERSION } from "./version";
export const Octokit = Core.plugin(requestLog, restEndpointMethods, paginateRest).defaults({
userAgent: `octokit-rest.js/${VERSION}`,
});
当我这样做时,每次导入都会收到类似的错误消息,如下所示:
index.js:4 GET https://localhost:44364/lib/@octokit/plugin-rest-endpoint-methods net::ERR_ABORTED 404
现在上面的 URL 指向目录而不是特定文件,如果我将上面的内容运行到单个文件,我可以看到它在浏览器中加载并显示文件。所以如果我输入:
https://localhost:44364/lib/@octokit/plugin-rest-endpoint-methods/dist-src/endpoints-to-methods.js
我可以看到浏览器中显示的 js 文件,所以我知道它可以被路径到。现在理想情况下,我希望能够在我编写的另一个自定义 js 中使用这个包,它遍历我的 repos 并创建带有所有信息的漂亮小卡片,所以我基本上只是想像这样使用它:
var octokit = new Octokit({ userAgent: 'agentName' });
但显然上面是在抱怨 Octokit 的存在。
所以我想我的问题是,到底是什么?我显然在这里遗漏了一些东西,所以如果有人对我需要寻找或研究的方向有任何想法,我将非常感激。
这可能与 octokit 包根本无关,更有可能是我只是不明白如何将这些类型的 JavaScript 库正确导入到我的 asp .net 核心解决方案中