Vue 項目 fetch 本地 json 報錯 SyntaxError: Unexpected token < in JSON at position 0


問題描述

在使用 Vue 框架編寫前端時,需要加載一個本地 json 文件中的數據。

原來使用原生 HTML 的時候,曾經使用 fetch 來讀取本地文件,優點是不需要引用第三方包:

fetch("./sampleData/project.json")
    .then(res => res.json())
    .then(data => console.log(data));

fetch 中的 url 屬性是 json 文件與當前 vue 文件的相對路徑。然而這次在 vue 中使用卻報錯了:

Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0

反復檢查了路徑的拼寫和 json 文件本身,並沒有發現任何不對,何況我的 json 文件中也根本沒有 < 字符。嘗試改了一下路徑中的文件名,發現如果寫一個不存在的文件名,報的錯是完全一致的;因此猜測可能是根本沒有正確訪問到 json 文件。

解決方案

后來發現,fetch 是網頁向前端服務器發起的請求,訪問到的是項目根目錄下的 public 文件夾,並不像在 vue 文件中 import 時一樣使用相對路徑。

因此只需要將想要獲取的文件移動到正確位置即可。例如上文中提到的 url 對應的目錄就是/public/sampleData/project.json

// 控制台輸出
> {records: Array(34)}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM