错误:未捕获的语法错误:意外的令牌 <

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 );
                
            
        );
    );

我认为一切都应该顺利进行,但我不明白为什么 &lt; 会以某种方式抛弃它..

哎呀,忘记显示发生这种情况的位置!我的错,

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 );
                
            
        );
    );

你能发现错误吗?它在第一行:&lt;script 标签没有关闭。它应该是 &lt;script type="text/javascript"&gt;

但是,我之前的建议仍然有效:您应该将内部标记脚本包含在 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 头中添加一个基本标记。

&lt;base href="/my-app/"&gt;

【讨论】:

这解决了我的问题 - 在我的情况下,我使用了 - 从没想过这是一个 htaccess 问题! 我在使用带有“user/:userid”等路径的 react-router 时遇到了类似的问题。在我的资源 URL 前添加基本标记修复了它。谢谢@jeff-h! 这是真的,但这是david.barkhuizen 's answer所描述的更普遍问题的结果【参考方案6】:

这通常发生在您尝试加载非 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。

【讨论】:

以上是关于错误:未捕获的语法错误:意外的令牌 <的主要内容,如果未能解决你的问题,请参考以下文章

D3.js:“未捕获的语法错误:意外的令牌非法”?

未捕获的语法错误意外令牌 U JSON

加载socket.io.js时Node.js“未捕获的语法错误:意外的令牌<”

未捕获的语法错误:意外的令牌:getJSON

致命错误:未捕获的异常“Phalcon\Mvc\Model\Exception”与消息“语法错误,意外令牌>,

WCF 跨域使用 Jsonp 错误未捕获语法错误:意外令牌: