【问题标题】:<!DOCTYPE html> in JS fileJS 文件中的 <!DOCTYPE html>
【发布时间】:2017-07-26 13:37:10
【问题描述】:

我在我的 map.HTML 标头中引用了两个 JS 文件。 Chrome 控制台提供

  Uncaught SyntaxError: Unexpected token <

这就是我感到困惑的原因。当我单击 Chrome 控制台错误消息时,它会将我带到 Sources 选项卡。在 Sources 下,它将我置于相对 JS 选项卡上,并显示以 开头的代码,然后继续显示大量不在我的 map.html 文件或 JS 文件中的代码。想必这是读取JS的时候产生的吧?

这两个JS文件是:

https://github.com/socib/Leaflet.TimeDimension/tree/master/dist https://github.com/calvinmetcalf/leaflet-ajax/tree/gh-pages/dist

我使用批处理文件 (python.exe -m http.server) 使用简单的 python 服务器在 Chrome 本地打开 map.HTML。

我确信这是非常基本的,但它让我感到困惑,因为我在网上和本地引用了很多其他 JS 文件,但我没有收到这个错误。

谢谢

【问题讨论】:

  • HTML 可以在 codepen 上找到:codepen.io/LeevGG/pen/OjVMJM
  • Javascript 文件不以&lt;!DOCTYPE ...&gt; 开头。您引用的网址也不是 Javascript 文件。
  • js 根本不使用 &lt;!DOCTYPE html&gt; 或 doctype...这是针对 html 的 ..
  • HTML 中 的 JS 语法是“use strict” :)
  • 抱歉,在查看控制台消息与 JS 文件时感到困惑并且陈述错误。我已经修改了我的评论。

标签: javascript html syntax token


【解决方案1】:

如果您在浏览器中尝试https://github.com/socib/Leaflet.TimeDimension/blob/master/dist/leaflet.timedimension.min.js,您将获得一个 HTML 页面。

如果你尝试https://raw.githubusercontent.com/socib/Leaflet.TimeDimension/master/dist/leaflet.timedimension.min.js,你会得到一个源 javascript 文件的接缝。但是您的浏览器也可能认为它是 text/html,因为这是 github 在 content-type 标头中发送的内容。

您可以使用第三方网站来提供具有适当内容类型标头的文件(例如:https://rawgit.com/socib/Leaflet.TimeDimension/master/dist/leaflet.timedimension.min.js)。

【讨论】:

  • 我在网上研究(很多)后尝试了 rawgit.com 方法,但我不确定它是否正确加载。控制台以红色突出显示链接并将其标记为 GET(红色),这表明加载它仍然存在问题。真正让我困惑的是,为什么这两个会引起问题,而其他人却没有。他们有什么独特之处?
  • 这加载了我的 JS,但它仍然在控制台中将其标记为 RED。我想我会做一些阅读。谢谢。
【解决方案2】:

以后在发帖前尽量多做研究,否则很多人会否决你的问题,甚至侮辱你。

一个简单的谷歌搜索 html 和 javascript 之间的差异可能是一个好的开始。第一步是删除那些 doctype 行。它们在 Javascript 中没有任何意义。就像granola这个词在日语中没有意义一样。不同的语言。

但是,查看您的代码,我在您的 javascript 中看不到任何 DOCTYPE 文本。为了真正调试它,您需要在浏览器(我推荐 Chrome)中打开您的网页 (html),然后按 F12 打开开发人员工具。转到控制台并通过所有文件追溯错误以找到根源。

为了检查并确保您正在尝试提取 javascript 文件而不是 html,请获取您正在使用的所有 src 网址并将它们粘贴到浏览器中。如果您登陆网页,该网址将提供 html,而不是您想要的 javascript。如果您得到一堵文字墙,那么您可能正确地引用了它。

正确:https://api.mapbox.com/mapbox.js/v3.0.1/mapbox.js

不正确:https://github.com/socib/Leaflet.TimeDimension/blob/master/dist/leaflet.timedimension.min.js

希望在此问题被删除或搁置之前,这会有所帮助。另请注意,人们会因为我实际回答并试图提供帮助而对我投反对票。

【讨论】:

  • 谢谢。这就是我一直在做的事情并相应地更新了我的帖子。
  • 这有点复杂,因为您使用的是 codepen 网站,它不喜欢 &lt;!DOCTYPE html&gt; 声明
  • 我把它加载在那里作为问题的参考。我没有用它来测试。
  • 艰难的一天@toshiomagic ? :) 我认为您应该编辑您的问题并删除与 OP 问题无关的内容。
  • 我觉得警告新用户这里的文化比回答这个问题更有帮助。看这个。真正寻求帮助的新用户和程序员在合法问题上得到 -4(到目前为止)。
【解决方案3】:

您不能像您尝试的那样直接引用存储在 github 存储库中的代码。

您列出的网址不是 javascript 文件;它们是 github 网页。这就是为什么它们包含您不认识的 HTML 文档类型和代码——它是 github 网站代码。

您可以通过单击任何这些页面顶部的“原始”按钮来获取实际 javascript 文件的 URL(在选择特定的单个文件后 - 您提供的 URL 是目录,而不是单个文件。)例如:

这是一个 HTML 文件:https://github.com/socib/Leaflet.TimeDimension/blob/master/dist/leaflet.timedimension.min.js

这是原始的 javascript: https://raw.githubusercontent.com/socib/Leaflet.TimeDimension/master/dist/leaflet.timedimension.min.js

(也就是说,我不认为将 github 视为 CDN 是一个好主意;通常您会将其纯粹用作存储库并将实际使用的文件托管在其他地方。)

【讨论】:

  • 非常感谢,这有帮助。我不确定引用 Github 上托管的 JS 的最佳方式,并且还没有在网上找到一致的“最佳实践”建议(并且是为一个完整的新手编写的)。
猜你喜欢
  • 2020-09-12
  • 2011-12-11
  • 1970-01-01
  • 2015-01-08
  • 2021-04-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-18
  • 2016-07-28
相关资源
最近更新 更多