成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Unexpected token < in JSON at position 0 的錯(cuò)誤解析

史占廣 / 1260人閱讀

摘要:實(shí)際的請求沒有問題,它得到了一個(gè)返回值,發(fā)生問題的關(guān)鍵在于。下面是一些我所看見的錯(cuò)誤的提示解決方案首先要做是先把返回值打印出來。同時(shí)可以通過的查看請求的返回值。

Unhandled Rejection (SyntaxError): Unexpected token < in JSON at position 0

當(dāng)你發(fā)送一個(gè)HTTP請求,可能是用Fetch或者其他的Ajax庫,可能會出現(xiàn)這個(gè)錯(cuò)誤提示,或者相似的錯(cuò)誤。
接下來我將解釋這是由什么引起的,我們應(yīng)該怎樣解決這些問題

1.引起的原因

這些錯(cuò)誤發(fā)生在當(dāng)你向服務(wù)器發(fā)送請求,返回值不是JSON而用JSON的方法解析的時(shí)候,發(fā)生這種情況的代碼可能是這樣的。

fetch("/users").then(res => res.json())

實(shí)際的請求沒有問題,它得到了一個(gè)返回值,發(fā)生問題的關(guān)鍵在于res.json()。

2. JSON.parse

用另一種方法JSON.parse來解析Json的, 代碼可能是這樣的

JSON.parse(`不是Json的字符串`);

JSON.parse()本質(zhì)上是和res.json()一樣的,所以它們發(fā)生錯(cuò)誤的情況是相同的。

3. 無效的JSON
JSON應(yīng)該以有效的JSON值開始 —— 一個(gè)object, array, string, number, 或者是
false/true/null。以<開始的返回值會有Unexpected token <這樣的提示。
<這個(gè)符號意味著返回值是HTML而不是JSON。
引起這個(gè)錯(cuò)誤的根源是服務(wù)端返回的是HTML或者其他不是Json的字符串。

為什么會這樣呢?
“Unexpected token o in JSON at position 1” 或者其他變量。
錯(cuò)誤的提示一些差別會隨著服務(wù)器返回的不同而不同

它所提示的符號或者位置可能不同,但是引起它的原因是相同的: 你的代碼所有解析的Json不是真的有效的Json。
下面是一些我所看見的錯(cuò)誤的提示:

Unexpected token < in JSON at position 1

Unexpected token p in JSON at position 0

Unexpected token d in JSON at position 0

4.解決方案

With fetch, you can use res.text() instead of res.json() to get the text string itself. Alter your code to read something like this, and check the console to see what’s causing the problem:
首先要做是先把返回值打印出來。如果用fetch,可以用res.text()代替res.json()來獲得字符串。把你的代碼轉(zhuǎn)換成如下這樣,并且通過打印出來的內(nèi)容查看哪里出問題了。

fetch("/users")
  // .then(res => res.json()) // comment this out for now
  .then(res => res.text())          // convert to plain text
  .then(text => console.log(text))  // then log it out

注意像res.json()res.text()這樣的方法是異步的。所以不能直接把它們的返回值打印出來,這就是console.log必須在.then的括號里面的原因。

5. 是因?yàn)榉?wù)器的原因嗎?

服務(wù)器有好幾種原因返回HTML而不是JSON:

請求的url不存在,服務(wù)器以HTML的方式返回404頁面。你可能在請求時(shí)代碼寫錯(cuò)(像把/user寫成了/users),或者服務(wù)端的代碼的錯(cuò)誤。

當(dāng)添加了新的路由時(shí),服務(wù)器需要重啟。比如你在用Express寫的服務(wù)器時(shí),剛剛新加了一個(gè)app.get("/users", ...)路由,但是沒有重啟,服務(wù)器就不會對新的路由地址有反應(yīng)。

客戶端的代理沒有設(shè)置: 如果在使用像Create React App的Webpack dev server時(shí),你可以設(shè)置一個(gè)指向后端服務(wù)器的代理。

API的根url是/,如果你在通過Webpack 或Create React App使用代理,要確認(rèn)你的API路由不在根的層級/。這樣會時(shí)代理服務(wù)器混淆,你將得到一個(gè)HTML而不是你的API請求的返回。你可以在如有前面加個(gè)前綴像/api/。

同時(shí)可以通過devtools的network查看請求的返回值。

是不是404頁面?(可能是缺少該地址或者代碼輸入錯(cuò)誤)。

這是不是index.html的頁面?(可能是缺少地址或者代理配置錯(cuò)誤)

如果一切看起來沒問題(新加的地址,服務(wù)端沒有重啟),那就重啟前端和后端服務(wù)器,看看是不是問題解決了

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/100501.html

相關(guān)文章

  • bug集合js1--Unexpected token o in JSON at position 1

    摘要:可是這次又碰到了,所以這次必須要弄明白原因。將第一個(gè)字符理解為數(shù)組的開始,第二字符不知道怎么處理所以就拋出了上面的錯(cuò)誤信息。資源倉庫集合我的博客地址如果您對我的博客內(nèi)容有疑惑或質(zhì)疑的地方,請?jiān)谙路皆u論區(qū)留言,或郵件給我,共同學(xué)習(xí)進(jìn)步。 歡迎訪問我的個(gè)人博客:http://www.xiaolongwu.cn 寫在前面的話 這個(gè)問題在之前做項(xiàng)目時(shí)碰到過一次,當(dāng)時(shí)按照網(wǎng)上的做法,去掉JSON...

    funnyZhang 評論0 收藏0
  • hexo+css遇到unexpected token問題

    摘要:問題背景使用模擬實(shí)現(xiàn)文檔,頁面和的語法差異遇到問題。文檔中的效果如下分析問題報(bào)錯(cuò)信息寫的很明確,,是不被期望的。遇到問題時(shí),解決思路可以考慮下轉(zhuǎn)義碼標(biāo)簽。 問題背景 使用hexo+css模擬實(shí)現(xiàn)weex文檔,頁面Weex 和 Vue 2.x 的語法差異遇到問題。 問題描述 新建頁面,copy進(jìn)去內(nèi)容,hexo server運(yùn)行,控制臺報(bào)錯(cuò): FATAL Somethings wrong...

    haoguo 評論0 收藏0
  • JavaScript 調(diào)試常見報(bào)錯(cuò)以及修復(fù)方法

    摘要:表示錯(cuò)誤沒有被語句捕獲,是錯(cuò)誤的名字。如何修復(fù)錯(cuò)誤確保方法名正確。這個(gè)錯(cuò)誤的行號將指出正確的位置。相關(guān)錯(cuò)誤代碼調(diào)用的方法在當(dāng)前狀態(tài)無法調(diào)用。通常由引起,在方法準(zhǔn)備完畢之前調(diào)用它會引起錯(cuò)誤。原文翻譯出處涂鴉碼農(nóng)錯(cuò)誤以及如何修復(fù) (看到一篇調(diào)試JS很有用的文章,收藏一下) JavaScript 調(diào)試是一場噩夢:首先給出的錯(cuò)誤非常難以理解,其次給出的行號不總有幫助。有個(gè)查找錯(cuò)誤含義,及修復(fù)...

    zhongmeizhi 評論0 收藏0
  • javascript錯(cuò)誤處理類型

    摘要:來聊一聊每一種錯(cuò)誤類型的使用和出錯(cuò)的場景。不屬于有效類型。例如拋出錯(cuò)誤自定義錯(cuò)誤類型有時(shí)候希望自定義錯(cuò)誤類型,需要自定義一個(gè)構(gòu)造函數(shù),然后讓原型繼承繼承即可。例如以下調(diào)用錯(cuò)誤信息為以上為拋錯(cuò)的構(gòu)造函數(shù)的總結(jié),如有誤之處歡迎扶正。 在寫javascript的時(shí)候,調(diào)試錯(cuò)誤必不可少,除了能夠在瀏覽器中打印出來錯(cuò)誤外,常常還需要知道錯(cuò)誤的類型是什么,以便對癥下藥的糾錯(cuò);也有時(shí)候,在自己封裝的...

    lylwyy2016 評論0 收藏0
  • 比原鏈Bytom錯(cuò)誤碼一覽

    摘要:錯(cuò)誤編號內(nèi)容注釋非比原標(biāo)準(zhǔn)錯(cuò)誤請求超時(shí)非法的請求體為網(wǎng)絡(luò)錯(cuò)誤編號內(nèi)容注釋區(qū)塊鏈網(wǎng)絡(luò)類型不匹配是簽名相關(guān)的錯(cuò)誤編號內(nèi)容注釋需要簽名的個(gè)數(shù)超過實(shí)際需求簽名的個(gè)數(shù)簽名格式錯(cuò)誤缺少主公鑰主公鑰重復(fù)為交易相關(guān)的錯(cuò)誤構(gòu)建交易錯(cuò)誤編號內(nèi)容注釋資產(chǎn)余額不 0XX API錯(cuò)誤 編號 內(nèi)容 注釋 BTM000 Bytom API Error 非比原標(biāo)準(zhǔn)錯(cuò)誤 BTM001 Request t...

    Nosee 評論0 收藏0

發(fā)表評論

0條評論

史占廣

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<