Javascript 从Express Server接收JSON数据时无法识别语法错误

Javascript 从Express Server接收JSON数据时无法识别语法错误,javascript,node.js,json,express,es6-promise,Javascript,Node.js,Json,Express,Es6 Promise,我有一个运行的express服务器,它提供JSON数据。当我的javascript代码请求时,它会提供来自3个文件的数据。在javascript代码中,我有3个函数来执行单独的http get方法,并将它们与Promise.all同步。对于每个解析,我传递解析后的JSON数据,它抛出标题中提到的错误。但是,执行仍在继续,我能够访问Promise.all块中的JSON数据。我在网上查看了一下,发现大多数人在服务器响应中缺少括号等内容,或者内容类型不正确。这些都没有影响我的计划 错误为未捕获Synt

我有一个运行的express服务器,它提供JSON数据。当我的javascript代码请求时,它会提供来自3个文件的数据。在javascript代码中,我有3个函数来执行单独的http get方法,并将它们与Promise.all同步。对于每个解析,我传递解析后的JSON数据,它抛出标题中提到的错误。但是,执行仍在继续,我能够访问Promise.all块中的JSON数据。我在网上查看了一下,发现大多数人在服务器响应中缺少括号等内容,或者内容类型不正确。这些都没有影响我的计划


错误为未捕获SyntaxError:JSON输入意外结束 在JSON.parse()处

任何帮助都将不胜感激。下面提供了源代码片段:-

Javascript承诺块

函数getposts(){ 返回新承诺(功能(解决、拒绝){ var httpposts=new XMLHttpRequest(); httpposts.open(“GET”http://localhost:3000/users"); httpposts.send(); httpposts.onreadystatechange=(e)=>{ if(httpposts.readyState==4&httpposts.status==200){ 解析(JSON.parse(httpposts.responseText)); } } }); } 函数getcomments(){ 返回新承诺(功能(解决、拒绝){ var httpcomments=new XMLHttpRequest(); httpcomments.open(“GET”http://localhost:3000/comments"); httpcomments.send(); httpcomments.onreadystatechange=(e)=>{ //console.log(httpcomments); if(httpcomments.readyState==4&httpcomments.status==200){ 解析(JSON.parse(httpcomments.responseText)); } } }); } 函数getuser(){ 返回新承诺(功能(解决、拒绝){ var httpuser=new XMLHttpRequest(); httpuser.open(“GET”http://localhost:3000/posts"); httpuser.send(); httpuser.onreadystatechange=(e)=>{ if(httpuser.readyState==4&httpuser.status==200){ 解析(JSON.parse(httpuser.responseText)); } } }); } 所有([getposts(),getcomments(),getuser()])。然后(函数(数据){ 控制台日志(数据); //警惕(“承诺”); if(window.localStorage.length==0){ setItem(“用户”,数据[2]); setItem(“注释”,数据[1]); setItem(“posts”,数据[0]); }
})删除对httpresponse.readyState==4的检查是导致此问题的原因


在我的代码中取消对该部分的注释后,它就完美地工作了。事后看来,我应该完全按照编辑器中的代码发布代码,而不是为了避免问题而对其进行编辑。承诺在响应完成和准备就绪之前就已解决,因此JSON数据的输入意外结束。

错误是什么?JSON文件是如何生成的?只是要指出,您正在发回JSON,但将内容类型设置为text/plain。您不使用application/json的任何原因?未捕获的语法错误:json.parse()处json输入的意外结束是错误。@Felix Klingand你可能在用express。。。但是json不是由express生成的。。。您正在发送的是一个简单的静态文件。。。。正如上一篇评论中提到的,您应该使用application/json,顺便说一下。。。要成为有效的json,没有utf8字符。。。只有普通ASCI有效(\u1234用于编码重音…)有几件事。。。您确定要从服务器发送JSON吗?看起来您只是从文件中提取字符串文本并发送它。首先,我会选择.json()。将content-type设置为application/json-content-type将获得every.single.time。它们从前端删除了JSON.parse——parse转换为字符串,但现在已经转换为纯JSON。