Unexpected end of input 错误,求教

2024-10-26 13:28:59 +08:00
 pcxys

求教各位大佬,这个问题是咋回事,google 上找了一天,也没有找到好的办法。

2497 次点击
所在节点    JavaScript
26 条回复
apples01
2024-10-26 13:38:04 +08:00
看不到图
Opportunity
2024-10-26 14:37:53 +08:00
说明没获取到正确的 JSON 文件,看 Network
NessajCN
2024-10-26 14:44:38 +08:00
你为啥会去用 HTTP GET 请求一个本地 json 文件?
你知道 fetch 是用来干嘛的吗
humbass
2024-10-26 15:03:49 +08:00
直接在浏览器访问 http://your-hostname/constant/ceshi.json 有返回的话,fetch 也能得到数据,否则就不对
pcxys
2024-10-26 15:09:53 +08:00
@Opportunity
网络里面有这个文件,状态是 200
pcxys
2024-10-26 15:10:37 +08:00
@NessajCN
那我应该用什么方法读取本地的 json 文件呢?
有没有什么函数之类的?
pcxys
2024-10-26 15:11:44 +08:00
@humbass
我现在是在本地测试的,所以可能不能用网址去访问。
如果是用本地地址去访问的话,没问题。
lisongeee
2024-10-26 15:18:48 +08:00
需要展示完整的 html 文件才知道,截图里不完整

比如控制台错误里的 15 行 30 列到底对应代码的哪位置?
pcxys
2024-10-26 15:45:27 +08:00
@lisongeee
“.then((response) => response.json())”这个是第 15 行。
humbass
2024-10-26 15:48:30 +08:00
@pcxys fetch 基于浏览器的,必须是 http(s),不支持本地,不知道吗?初学者?

当然 node.js 也有 fetch ,那个可以直接读取
lisongeee
2024-10-26 15:56:30 +08:00
测试了一下,确实出现了这个错误

因为你设置了 mode: 'no-cors', 导致拿到的 content 是 '' 空字符串,所以发生 json 解码错误

去掉上面的 mode 参数会报另外的错,意思是 fetch 只支持 chrome-extension, chrome-untrusted, data, edge, http, https, isolated-app. 这类协议

那你就别用 file 协议访问
NessajCN
2024-10-26 16:19:09 +08:00
@pcxys fetch 不是用来读本地文件的,或者说浏览器就不支持读本地文件,不然网站上随便来个脚本就能读你电脑里的文件不是乱套了吗
你要读这个 json ,首先是把这个文件用 http server 开放出去,也就是能在浏览器里用 http://xxx/xxx.json 访问到,这样浏览器在从其他地方 fetch 这个文件就是合法的。具体到你这个例子,我假设你是用 nginx 当服务器,那你就把 json 文件放到 index.html 同目录,然后再在 index.html 里 fetch("xxx.json")应该就能获取到了
pcxys
2024-10-26 16:57:08 +08:00
@humbass
确实是初学者,如果不能用,我应该用什么函数去调取本地的 json 比较好?
pcxys
2024-10-26 16:58:08 +08:00
@lisongeee
对,如果取消掉就会出现好像是跨域的错误。
那你有什么好的办法或者函数可以使用嘛?
pcxys
2024-10-26 16:59:56 +08:00
@NessajCN
那大家一般如何去调取本地的 json 文件的呢?有什么好用的函数吗?
lisxour
2024-10-26 17:11:16 +08:00
@pcxys #15 调不了,开个本地服务吧,或者使用浏览器最新支持的 native fs api ,不过这个就算了
daozun
2024-10-26 17:26:17 +08:00
使用 vscode 开发的话,下载一个 Live server 插件,它会在本地开启一个服务器,应该对你有帮助
dumbass
2024-10-26 17:52:33 +08:00
看下来应该是 response.json 方法报错了,响应结果无法 json 序列化,加个 try catch 就行了
markgor
2024-10-26 18:08:37 +08:00
@pcxys 本地為何不直接 import 過來
markgor
2024-10-26 18:09:54 +08:00
不知道你想幹什麼,這個 json 是發佈之後也是本地的,還是說發佈後是請求線上的。
如果是發佈後請求線上的,但是你現在想調試,你可以看看 mock 這方面得。
如果發佈後都是不需要請求後端的,直接 import

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1083818

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX