ChatGPT解决这个技术问题 Extra ChatGPT

Chrome:未捕获的 SyntaxError:输入意外结束

在 Google Chrome 中加载我的页面时,我在控制台中收到一个模糊的错误:

未捕获的 SyntaxError:输入意外结束

我不知道是什么原因造成的。我将如何调试此错误?

检查网络嗅探器中的响应可能会给你一个线索。我的猜测是 Content-length 标头指定的字节数比响应包含的字节数多,或者服务器可能以某种方式发送了无效的 HTML。
大多数时候缺少}(javascript)。检查类和函数的结尾。尝试在脚本末尾添加另一个结束 } 并重新自动格式化您的代码。如果您的代码中有任何奇怪的缩进,那么在此之前的某个地方很可能是 } 丢失的地方。
我在错误加载 JS 时遇到了这个问题。我将它加载为 <script>https://example.com/a.js</script>,它应该是 <script src="https://example.com/a.js"></script>
我今天在 Google 表格上收到此错误。我的猜测是他们的一个 JS 文件太大了,以至于它在没有完全加载的情况下被终止。或者他们的一个应用服务器有一个错误,在 JS 文件完全下载之前关闭了 http 连接。

N
Nae

这个特定的错误是关于 的一个令人讨厌的事实。在大多数情况下,您的 JavaScript 以某种方式被破坏了。例如缺少 } 或类似的东西。

给出的示例,这也会产生“意外的输入结束”:

eval('[{"test": 4}') // notice the missing ]

但问题的根本原因似乎是请求的 JSON url 的 Content-Typetext/html,Chrome 显然试图将其解析为 HTML,然后导致输入意外结束包含的图像标签正在被解析的事实。

尝试将 Content-Type 设置为 text/plain 我认为它应该可以解决问题。

尽管如此,V8 可以做得更好,告诉人们输入意外结束的确切位置。


好的,非常感谢我一起删除了json请求,错误消失了我还没有弄清楚我的json请求到底出了什么问题。我只是不知道从哪里开始调试。如果我可以问你是如何确定根本原因的
可能不是那么明显。我在缩小的 JS 上遇到了这个错误,因为它被最小化器破坏了,而未缩小的 JS 是完全合法和有效的。不幸的是,Chrome 只显示发生错误的行,对于最小化的 JS,通常是整个文件...
输入结束的地方并没有那么多(因为那会在最后)。相反,知道预期会有所帮助。
救了我的尾巴。我对这种模棱两可感到非常恼火。谢谢。
我有同样的错误,因为我使用的是 JSON.parse(text) 并且文本值是空字符串
佚名

试试 Firebug for Mozilla - 它会显示缺少的 } 的位置。

http://getfirebug.com/


不需要萤火虫。 Firefox 中的控制台准确地告诉我缺少哪一行和缺少什么字符
也不需要火柴。 Firefox 控制台 ctrl+shift+i 会告诉您。
警告,如果脚本被最小化为一个巨大的行,预计 Firefox 会挂起几分钟/几小时/几年。
这是迄今为止追踪这些语法错误的最简单方法
我的上帝,谢谢你。我觉得 chrome 在开发人员工具方面与 Firefox 相比遥遥领先。令人惊讶的是,它如何未能正确处理这件小事。让我免于头疼!
C
Community

请参阅另一个 similar question 上的 my case

就我而言,我试图解析一个空的 JSON: JSON.parse(stringifiedJSON);换句话说,发生的事情如下: JSON.parse("");


是的,我也有这个!您可以通过提供“{}”而不是空字符串来轻松解决
由于 URL 中的双斜杠(例如 localhost:8080//mypath/blagh),我收到了空 json,并且服务器为此返回了一个空响应。
我来这里只是为了确认这个解决方案。
H
Hubro

当我在 JavaScript 代码中省略右大括号字符 (}) 时,我收到此错误。检查您的牙套是否正确平衡。


D
DroidOS

作为记录,对于任何试图找到导致此错误的各种原因的人。一个空的 HTML5 数据属性

data-mydata = ''

也会导致错误。您应该检查数据值何时为空字符串并且根本不包含该属性。不用说,这在很大程度上与脚本生成的 HTML 有关。


没有你,永远不会明白这一点。我正在使用 VideoJS,我从他们的页面复制了他们的视频播放器的 html。它有一个你可以使用的数据属性占位符,但我没有。视频没有加载,我收到了每个人都在谈论的错误。删除 data-setup='{"example_option":true}' 后一切正常。
@user1002379,很高兴我能帮上忙。
B
Blaskovicz

对我来说,问题是我正在为返回 HTTP 201(已创建)且没有请求正文的 POST 请求使用 dataType: "json" 执行 $.ajax。解决方法是简单地删除该键/值。


我启动了一个 ajax 请求(上传)并在它完成之前中止了它,我收到了这个错误。
H
Harfatum

JSHint 擅长查找缺少括号或语法错误的位置。


A
Andrew

此错误的另一个原因是:如果您的 API 故意响应没有响应正文,但响应的是 200 OK 状态代码而不是 204 No Content 状态代码。一些 JavaScript 库在没有内容时可能无法很好地响应意外的内容类型,因此请使用正确的状态码!


H
Hawken MacKay Rives

肯定会有一个导致错误的开放括号。

我建议您在 Firefox 中打开该页面,然后打开 Firebug 并检查控制台——它会显示缺少的符号。

示例截图:

https://i.stack.imgur.com/uP2eq.png


A
Amir Al

我的问题是 Google Chrome 缓存。我通过在 Firefox 上运行我的 Web 应用程序对此进行了测试,但没有出现该错误。所以我决定尝试清空谷歌浏览器的缓存并且它有效。


J
Johan Doe

如果您的 JavaScript 代码被压缩为一行,则导致此错误的另一个原因是您的注释使用 // 而不是 /**/

不好(注释掉 // 之后的所有内容,包括您的函数的结束 }

function example() { //comment console.log('TEST'); }

好(限制您的评论)

function example() { /* comment */ console.log('TEST'); }

工作,另外,你应该使用 \" the-text \" 作为指“the-text”也用于铸造。
G
George_kane

在我的情况下,我动态添加了 javascript 并在字符串模板中使用了 2 次双引号,所以我将第二个更改为单引号,错误就消失了。我希望它会帮助一些出于同样原因来到这里的人。


使用addthis我用双字符串附加到url,然后改为单引号,控制台错误消失了
j
jtate

尝试解析空 JSON 可能是导致此错误的原因。

当您收到来自服务器或其他的响应时,请先检查它是否为空。例如:

function parseJSON(response) {
    if (response.status === 204 || response.status === 205) {
        return null;
    }
    return response.json();
}

然后你可以获取:

fetch(url, options).then(parseJSON); 

O
OlehZiniak

在按下 am/pm 切换时,我使用 angularjs - uib-datepicker 的 ui bootstrap 指令遇到了类似的问题。

(未知)的事件处理程序中的错误:SyntaxError:JSON 输入角度时间选择器的意外结束

原来是因为插件“Trans-over”(点击时会翻译一个单词)。也许我的回答会对某人有所帮助,因为我在互联网上没有找到任何东西。


s
safhac

由于它是异步操作,因此 onreadystatechange 可能在值加载到 responseText 之前发生,请尝试使用 window.setTimeout(function () { JSON.parse(xhr.responseText); }, 1000); 来查看错误是否仍然存在?波尔


B
Brick

我遇到了这个错误,并通过在此处显示的 readyStatestatus 添加防护来修复它:

var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
          // Your code here
   }
};

H
Harsha Annareddy

如果您在 Anchor 标记处遇到错误,只需将“Onclick”替换为“href”或将“href”替换为“Onclick”


S
Stefano Populin

当我遇到同样的问题时,将请求中的 Accept 标头设置为 application/json 对我有用。


S
Shahid Islam

就我而言,我的网速很低,当我关闭其他用户的互联网连接时,错误消失了,奇怪


S
Sergey V.

https://i.stack.imgur.com/RQEVs.png