2 回答

TA貢獻1804條經驗 獲得超7個贊
const urlTestJsonModel = URL.createObjectURL(file);
metaModelSrc: urlTestJsonModel 解決了我的問題:) 謝謝大家的幫助

TA貢獻1963條經驗 獲得超6個贊
錯誤消息“Unexpected token < in JSON atposition 0”始終表示特定類型的錯誤
起初我以為是JSON.stringify,但這當然是錯誤的。我們錯誤地將注意力集中在以下幾行上:
const metaDatastringify= JSON.stringify(metaData);
...因此關于元數據的內容。
容易出錯的并不是字符串化。你可以用 JSON.stringify 幾乎任何舊的廢話。
您的錯誤位于 JSON.parse 中
在此期間發生錯誤(但此代碼本身沒有錯誤):
gltfLoader.load({
id: "fsfdsfsdfs",
metaModelSrc: file1,
edges: true,
performance: true,
});
JSON.parse 始終期望接收一個字符串,第一個非空白字符是“{”。
您的 JSON.parse 調用不在您的代碼中,而是在gltfLoader.load().
使用 JSON.parse 可能會遇到的麻煩示例:
// Correct call
JSON.parse('{"a":3, "b":"hello"}')
{a: 3, b: "hello"}
// Forget the quotation marks around "a"
JSON.parse(' {a:"<html>skdjfhskdf</html> "}')
Uncaught SyntaxError: Unexpected token a in JSON at position 2
// Use wrong quotation marks (JSON.parse insists on double-quotes for each key. (I have put this error message as two single quotes, to stop stack overflow turning everything that follows into a comment, but it will appear as only one single quote.)
JSON.parse(" {'a':'<html>skdjfhskdf</html> '}")
Uncaught SyntaxError: Unexpected token '' in JSON at position 2
// Empty string input
JSON.parse("")
Uncaught SyntaxError: Unexpected end of JSON input
// Undefined - watch out for this one which is completely baffling the first time it happens! I think it is converting undefined into "undefined" for some reason?
JSON.parse(undefined)
Uncaught SyntaxError: Unexpected token u in JSON at position 0
// Feed in an HTML or XML string, i.e. something starting with an "<"
JSON.parse("<html>Hello</html>")
Uncaught SyntaxError: Unexpected token < in JSON at position 0
診斷步驟
這是您獲得的最后一種類型。因此,在運行期間gltfloader.load(),JSON.parse 語句以某種方式接收 XML 或 HTML 格式的數據項。
服務器要么實際以該格式發送數據,要么發送錯誤消息,例如 404 頁面。
您是否有任何方式通過 javascript 讀取該頁面,就像 via 之外的任何其他格式一樣gltfloader?
您是否考慮過像文本文件一樣讀取它(通過 javascript,而不是通過手動路徑并保存),然后看看您會得到什么?
是預期的 JSON 字符串,還是其他什么?我敢打賭是后者。
具體來說,我們可以看到錯誤消息不是來自Javascript,而是來自您編寫或引入的代碼
無法從“application/json”加載模型“fsfdsfsdfs”的模型元數據 - utils.loadJSON():無法解析 JSON 響應 - SyntaxError:位置 0 處的 JSON 中出現意外標記 <
將其分解如下。
最后一部分是由 Javascript 發出的:
utils.loadJSON(): Failed to parse JSON response - SyntaxError: Unexpected token < in JSON at position 0
前面的部分是由非Javascript解釋器的代碼故意發出的。
Failed to load model metadata for model 'fsfdsfsdfs from 'application/json'
有人編寫了“無法加載模型的模型元數據”這句話。這在 Javascript 解釋器中不存在。它是在添加的一些代碼模塊中。有一條錯誤消息故意打印出來,然后顯示底層的 Javascript 錯誤消息。
問題的核心是 JSON.parse(不是JSON.stringify),它對 XML 或 HTML 字符串而不是 JSON 字符串進行操作。
您確定 Javascript new File 函數實際上正在創建一個文件并將其保存在您的文件系統上嗎?
您告訴我們,當您放入"myfile.json"metaModelSrc 時,代碼就可以工作。這意味著當代碼從計算機的文件系統讀取文件(即您可以在文件資源管理器或 Finder 或 Nautilus 等中看到的文件)時,代碼可以正常工作。
但是,我認為 javascript“新文件”功能實際上并沒有將文件保存到計算機的硬盤上,不是嗎?你能看看運行時是否創建了一個嗎?
添加回答
舉報