【问题标题】:JS errors when changing hosts更改主机时出现 JS 错误
【发布时间】:2023-03-16 11:20:01
【问题描述】:

以前我使用托管主机,但最近一直在测试使用 Virtualmin 运行 CentOs 的 VPS 服务器设置。

我已经迁移了一个在托管主机上运行良好的网站,但是将它迁移到 VPS 会给我带来多个 JS 错误。出于某种原因,它似乎没有加载任何 JS 脚本。当我用 CDN 链接替换脚本时,一切都恢复正常了。

我检查了目录权限,它们的设置与以前的托管相同,例如,我还可以使用 website.com/js/bootstrap.min.js 访问和读取每个文件。唯一的区别是 JS 目录本身是“禁止的”。我不确定当我可以读取实际文件时这是否会有所不同?

我的问题是,如果 JS 运行类似于 HTML 并且在使用 CDN 脚本时工作正常,为什么会发生这种情况?另外,下图text/javascript之前的JS SRC脚本中包含的随机ID是什么意思,可能是这个原因吗?

    <script src="js/jquery-3.2.1.min.js" type="7fb652456240e11add396d8d-text/javascript"></script>
    <script src="js/bootstrap.min.js" type="7fb652456240e11add396d8d-text/javascript"></script>
    <script src="js/jquery.slicknav.min.js" type="7fb652456240e11add396d8d-text/javascript"></script>
    <script src="js/owl.carousel.min.js" type="7fb652456240e11add396d8d-text/javascript"></script>
    <script src="js/jquery.magnific-popup.min.js" type="7fb652456240e11add396d8d-text/javascript"></script>
    <script src="js/circle-progress.min.js" type="7fb652456240e11add396d8d-text/javascript"></script>
    <script src="js/mixitup.min.js" type="7fb652456240e11add396d8d-text/javascript"></script>
    <script src="js/instafeed.min.js" type="7fb652456240e11add396d8d-text/javascript"></script>
    <script src="js/masonry.pkgd.min.js" type="7fb652456240e11add396d8d-text/javascript"></script>
    <script src="js/main.js" type="7fb652456240e11add396d8d-text/javascript"></script>
<script src="js/rocket-loader.min.js" data-cf-settings="7fb652456240e11add396d8d-|49" defer></script></body>
    </html>

【问题讨论】:

  • 为什么脚本类型是7fb652456240e11add396d8d-text/javascript 而不仅仅是text/javascript?文件编码不同吗?打开查看js/jquery-3.2.1.min.js看内容是否正常。
  • 我同意@onkarruikar,可能存在编码问题或其他导致内容不正常的问题。
  • HTML5 中不再需要 type 属性,因为 JavaScript 是大多数现代浏览器中的默认脚本语言。

标签: javascript html hosting script


【解决方案1】:

我还可以使用 例如 website.com/js/bootstrap.min.js。唯一的区别是 JS 目录本身是“禁止的”。

这没有意义。该文件夹被禁止或未被禁止。
如果您可以通过浏览器 url 访问该文件夹,那么显然它不是被禁止的。如果您在浏览器中收到“禁止”消息,那么显然该文件夹被禁止并且您发现了问题。

我的问题是,如果 JS 运行类似于 HTML,为什么会发生这种情况 并且在使用 CDN 脚本时工作正常?

转到浏览器中的网络选项卡并检查您在浏览器中收到的 http 状态,以获取您请求的资源,即本例中的 jQuery。 bootstrap 抛出的错误可能只是未加载 jQuery 的结果。我想一定有依赖关系。
如果没有,在绝对最坏的情况下,您可以加载引发的脚本的未缩小版本,并根据原始源代码调试问题。

它适用于 CDN 的原因显然是因为这些域允许您公开访问它托管的资源,否则您将无法获得它,这就是使用 CDN 的重点。
顺便说一句,您应该使用 CDN,对于为什么不应该使用这些常用库没有明确的论据。

另外,JS SRC中包含的随机ID是什么意思 下面显示的 text/javascript 之前的脚本,这可能是 原因?

我假设您的意思是类型,而不是 html 的 src 属性。
这是你的代码:

 <script src="js/jquery-3.2.1.min.js" type="7fb652456240e11add396d8d-text/javascript"></script>

这没有意义。如果有的话,它们看起来像生成的哈希值,当您异步加载 Javascript 块时经常发生这种情况。

它必须与框架相关,尽管我不知道您当前使用的是什么框架。我不知道您是否使用 SSR、CSR、模板库、捆绑库等。
但应该清楚的是,有些东西会为你生成这个字符串。您需要检查您的模板,生成模板的内容,无论哪种方式,如果可以,请完全删除该类型。在那个地方真的没用。

【讨论】:

    【解决方案2】:

    您似乎没有将 JQuery 放回您的新主机上。
    有几个线索:

    'unexpected token': jquery 使用 $
    'jQuery 没有定义'

    也可能是您将 jQuery 放置在与托管主机不同的位置。也可能是它仍然指向您的旧主机。

    如果这不起作用,请尝试删除 text/javascript 之前的文本(尽管我怀疑这是问题所在,考虑到它适用于您的旧主机)。此外,Javascript 的 mime 类型是 application/javascript。 试着检查那些。这应该可以解决您的问题。

    【讨论】:

      猜你喜欢
      • 2016-03-29
      • 1970-01-01
      • 1970-01-01
      • 2018-11-01
      • 1970-01-01
      • 2012-10-23
      • 1970-01-01
      • 2017-06-05
      • 1970-01-01
      相关资源
      最近更新 更多