错误:未捕获的语法错误:意外的令牌 <
Posted
技术标签:
【中文标题】错误:未捕获的语法错误:意外的令牌 <【英文标题】:Error: Uncaught SyntaxError: Unexpected token < 【发布时间】:2011-04-07 11:57:18 【问题描述】:由于某种原因,我收到以下错误消息:
Uncaught SyntaxError: Unexpected token <
对于这行代码:
title: '<img src="/images/text/text_mario_planet_jukebox.png" id="text_mario_planet_jukebox"/>',
在这种情况下:
$(document).ready(function()
$('#infobutton').click(function()
$('#music_descrip').dialog('open');
);
$('#music_descrip').dialog(
title: '<img src="/images/text/text_mario_planet_jukebox.png" id="text_mario_planet_jukebox"/>',
autoOpen: false,
height: 375,
width: 500,
modal: true,
resizable: false,
buttons:
'Without Music': function()
$(this).dialog('close');
$.cookie('autoPlay', 'no', expires: 365 * 10 );
,
'With Music': function()
$(this).dialog('close');
$.cookie('autoPlay', 'yes', expires: 365 * 10 );
);
);
我认为一切都应该顺利进行,但我不明白为什么 <
会以某种方式抛弃它..
哎呀,忘记显示发生这种情况的位置!我的错,
http://www.marioplanet.com/index.asp
有什么想法吗?
【问题讨论】:
我也不懂。也许您想分享一些代码并解释您正在尝试做什么等...?显示错误是一回事,但如果您想了解此错误的来源,我们需要查看导致错误的原因(这无疑是您的代码)。用error
标记您的问题也不会带来太多有价值的信息。
那不是真正的一行代码。我的意思是,你不能执行它。至少给我们足够的上下文来查看完整的声明。
K,我的错,我试图给它更多的上下文,但我忘了提供一个链接,我原本打算这样做..
对我来说这个错误是由错误的文件请求路径引起的,并且返回的 404 页面试图被解析,导致错误。希望这对某人有帮助:D
【参考方案1】:
这是浏览器问题,而不是 javascript 或 JQuery 问题;它试图将尖括号解释为 html 标记。
在设置您的 javascripts 时尝试这样做:
<script>
//<![CDATA[
// insert teh codez
//]]>
</script>
或者,将您的 javascript 移动到单独的文件中。
编辑:啊……我已经通过那个链接找到了它。我说的是问题根本不是问题。 这个是问题,从网站上删除:
<script type="text/javascript"
$(document).ready(function()
$('#infobutton').click(function()
$('#music_descrip').dialog('open');
);
$('#music_descrip').dialog(
title: '<img src="/images/text/text_mario_planet_jukebox.png" id="text_mario_planet_jukebox"/>',
autoOpen: false,
height: 375,
width: 500,
modal: true,
resizable: false,
buttons:
'Without Music': function()
$(this).dialog('close');
$.cookie('autoPlay', 'no', expires: 365 * 10 );
,
'With Music': function()
$(this).dialog('close');
$.cookie('autoPlay', 'yes', expires: 365 * 10 );
);
);
你能发现错误吗?它在第一行:<script
标签没有关闭。它应该是
<script type="text/javascript">
但是,我之前的建议仍然有效:您应该将内部标记脚本包含在 CDATA 块中,或者将它们移动到单独链接的文件中。
这不是这里的问题,但它会更快地显示真正的问题。
【讨论】:
哦 wowwwwwww...谢谢你的现场,但那太蹩脚了,无论如何,我将 js 移到了一个单独的文件中,以便更清晰的代码和可维护性。谢谢! 你能在jquery中捕捉到这样的异常吗?意思是,如果我的成功方法得到这个未捕获的异常,我想捕获它并向用户显示一些错误消息。 @noobcode 如果你的标记结构不正确,javascript 引擎将会惨遭失败——或者根本无法启动。如何处理标记中的错误是特定于浏览器的,我不确定是否提供了一种机制,你可以挂钩给用户一个通用的“我搞砸了你试图查看的网站”错误消息。 除了这个非常好的答案,我建议你也检查一下是否调用了一个不存在的 JS 文件。【参考方案2】:我不知道你有没有得到答案。我今天遇到了这个问题,我想我可能得到了一个正确的答案:你没有把脚本文件放在正确的位置。
大多数人没有遇到这个问题,因为他们将脚本直接放入了他们的服务器目录。我遇到这个是因为我将源文件(html 文件)链接到服务器根目录。我没有链接脚本文件,也不知道nginx是怎么找到的。但它们没有正确加载。
将所有文件链接到服务器根目录后,问题就解决了。
【讨论】:
【参考方案3】:它通常在您更改文件所在的目录名称时起作用。 当我将它从“js/”移动到“../js”时,它对我有用
【讨论】:
【参考方案4】:我有完全相同的症状,这是我的问题,很难追踪,所以我希望它对某人有所帮助。
我使用的是JQuery parseJSON()
,而我尝试解析的内容实际上不是 JSON,而是返回的错误页面。
【讨论】:
【参考方案5】:在使用 HTML5 推送状态和将任何未知文件重定向到 index.html 的 .htaccess 开发 Backbone 应用程序时,我也遇到了这个错误。
事实证明,当访问诸如 /something/5
之类的 URL 时,我的 /index.html
被有效地服务于 /something/index.html
(感谢我的 .htaccess)。这会破坏我的 JavaScript 文件的所有相对 URL(从 index.html 内部),这意味着它们应该对我进行 404 处理。
但是,再次由于我的 htaccess,在尝试检索 JS 文件时,他们没有返回 404,而是返回了我的 index.html。因此,浏览器为它试图拉入的每个 JavaScript 文件都提供了一个 index.html,当它像 JavaScript 一样评估 HTML 时,由于前导
在我的情况下(因为我从子目录中为网站提供服务)的解决方法是在我的 html 头中添加一个基本标记。
<base href="/my-app/">
【讨论】:
这解决了我的问题 - 在我的情况下,我使用了这通常发生在您尝试加载非 html 资源(例如,jquery 库脚本文件为 text/javascript 类型)并且服务器不返回预期的 JS 资源,而是返回 HTML - 通常是 404 页面.
然后浏览器尝试将资源解析为 JS,但由于实际返回的是 HTML 页面,因此解析失败并出现语法错误,并且由于 HTML 页面通常以
【讨论】:
有机会禁用此行为吗?不明白为什么 jquery 会与资源标签混淆 在我的情况下这是造成的,因为服务器设置为仅从“libs”文件夹加载库,而我将 jquery 放在不同的目录中。【参考方案7】:如果您仅在 Chrome 和 IE 中遇到此问题,例如,一切都很好,那么只需在开发工具(F12 ->“网络”选项卡)中启用复选按钮“禁用缓存”并清除过去一小时内的历史记录。
我遇到了这个问题,上面的解决方案对我有用。
【讨论】:
请不要对多个问题发布相同的答案。发布一个好的答案,然后投票/标记以关闭其他问题作为重复问题。如果问题不是重复的,调整您对该问题的回答。 这个答案为我节省了一天!非常感谢!【参考方案8】:尝试将 text/javascript 替换为 text/html,然后保存注释并重新加载浏览器,然后将其带回 text/javascript.. 我不知道,但由于未知原因,这个对我有用.. 我正在搜索和复制粘贴,我只是不小心撤消了我正在输入的内容然后繁荣 kablooey 它工作 0.O 顺便说一句我只是菜鸟..对不起,我只是认为它可以帮助..
【讨论】:
【参考方案9】:在尝试了几种解决方案后,这对我有用:
-
转到 IIS 管理器
打开网站
点击认证
编辑匿名身份验证。
选择“应用程序池标识”
example
【讨论】:
请在此处写下解决方案,而不是包含链接 -image- ,否则将来可能会损坏。谢谢! 浪费了很多时间之后。发现这是解决方案 这是我需要的修复!谢谢!【参考方案10】:我在使用带有 firebase 的网络应用程序时遇到此错误。这是由于 index.html 中没有包含所需的库
为了在开发环境中解决这个问题,我在 index.html 中添加了以下代码行
<script src="https://www.gstatic.com/firebasejs/8.1.1/firebase.js"></script>
当您计划部署到生产环境时,使用必要的库而不是导入所有 js sdk。
【讨论】:
以上是关于错误:未捕获的语法错误:意外的令牌 <的主要内容,如果未能解决你的问题,请参考以下文章
加载socket.io.js时Node.js“未捕获的语法错误:意外的令牌<”