【问题标题】:Github js file not loading (direct link)Github js文件未加载(直接链接)
【发布时间】:2020-11-04 03:17:24
【问题描述】:

我通过在页面上的<head> 标记中添加<script> 标记创建了一个供公众使用的编码库,但是当我尝试使用a 函数时,它运行时显示undefined

。我将 url 链接到 index.js 文件,但它没有将其加载到客户端用户。

<head>
<script src="https://github.com/McJoe21/coderslib/blob/master/index.js"></script>
</head>

当我运行我在index.js 文件中定义的console.log(ranInteger(1,10)) 时,我收到ranInteger is not defined 错误。欢迎所有帮助!

【问题讨论】:

  • 网址无效,显示错误
  • @nihiser — 不,这是一个 HTML 文档,显示文件的语法高亮版本。
  • Github 不是网络托管服务或 CDN。它托管 Git 存储库。如果您想要 CDN,请使用 CloudFront 或其他东西。
  • 我确实尝试使用github user content 解决同样的问题@Quentin 也有人使用 git 作为发布的下载站点
  • @JoeMcMullan — 不,不同的问题。类似原因:Github 不是网络托管服务或 CDN。它托管 Git 存储库。如果您想要 CDN,请使用 CloudFront 或其他东西。

标签: javascript html github url src


【解决方案1】:

从技术上讲,GitHub 不允许像 CDN 那样从他们的网站访问源代码,但是从 This * Question 那里,有一种解决方法。我不建议使用它,但您可以使用“https://cdn.jsdelivr.net/gh/”让您的脚本正常工作(来自 * 上的用户 @anayarojo)。

在您的案例中,网址如下所示:

https://cdn.jsdelivr.net/gh/McJoe21/coderslib/index.js

URL 的模式是: https://cdn.jsdelivr.net/gh/&lt;username&gt;/&lt;repository&gt;/&lt;file&gt;

【讨论】:

  • @JoeMcMullan 这将是一个单独的问题。 module.exports 不能作为 vanilla javascript 功能工作,module.exports 只能在 node.js 运行时环境中工作,所以你不能只在纯 HTML 页面中导入它
  • 但是@JohnnyLeek 浏览器不应该只是忽略那部分来完成其余的工作
【解决方案2】:

您尝试导入的文件是文件的 GitHub 查看器。要导入该文件的原始数据,您需要使用以下代码:

<script>
   const source = 'https://raw.githubusercontent.com/McJoe21/coderslib/master/index.js';
   fetch(source).then((response) => {
      return response.text()
   }).then((response) => {
      eval(response);
   }).catch((error) => {
      console.error(`An error occured while attempting to load the "${source}" resource!`);
      console.error(error);
   });
</script>

由于 GitHub 不允许直接导入其用户内容,因此您需要将源 URL 包装在上述 fetch-eval 块中。

【讨论】:

  • 这也不行:*.com/a/19285701/12513827
  • @JohnnyLeek 我更新了回复,现在应该可以了。
  • 是的,刚刚测试过了。有用。尽管出现了“模块未定义”,因为我在浏览器中对其进行了测试。但我定义了它并导出了一个控制台记录的设置器,果然,我得到了一些输出。
最近更新 更多