2 回答

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超7個(gè)贊
const urlTestJsonModel = URL.createObjectURL(file);
metaModelSrc: urlTestJsonModel 解決了我的問(wèn)題:) 謝謝大家的幫助

TA貢獻(xiàn)1963條經(jīng)驗(yàn) 獲得超6個(gè)贊
錯(cuò)誤消息“Unexpected token < in JSON atposition 0”始終表示特定類型的錯(cuò)誤
起初我以為是JSON.stringify,但這當(dāng)然是錯(cuò)誤的。我們錯(cuò)誤地將注意力集中在以下幾行上:
const metaDatastringify= JSON.stringify(metaData);
...因此關(guān)于元數(shù)據(jù)的內(nèi)容。
容易出錯(cuò)的并不是字符串化。你可以用 JSON.stringify 幾乎任何舊的廢話。
您的錯(cuò)誤位于 JSON.parse 中
在此期間發(fā)生錯(cuò)誤(但此代碼本身沒(méi)有錯(cuò)誤):
gltfLoader.load({
id: "fsfdsfsdfs",
metaModelSrc: file1,
edges: true,
performance: true,
});
JSON.parse 始終期望接收一個(gè)字符串,第一個(gè)非空白字符是“{”。
您的 JSON.parse 調(diào)用不在您的代碼中,而是在gltfLoader.load().
使用 JSON.parse 可能會(huì)遇到的麻煩示例:
// 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
診斷步驟
這是您獲得的最后一種類型。因此,在運(yùn)行期間gltfloader.load(),JSON.parse 語(yǔ)句以某種方式接收 XML 或 HTML 格式的數(shù)據(jù)項(xiàng)。
服務(wù)器要么實(shí)際以該格式發(fā)送數(shù)據(jù),要么發(fā)送錯(cuò)誤消息,例如 404 頁(yè)面。
您是否有任何方式通過(guò) javascript 讀取該頁(yè)面,就像 via 之外的任何其他格式一樣gltfloader?
您是否考慮過(guò)像文本文件一樣讀取它(通過(guò) javascript,而不是通過(guò)手動(dòng)路徑并保存),然后看看您會(huì)得到什么?
是預(yù)期的 JSON 字符串,還是其他什么?我敢打賭是后者。
具體來(lái)說(shuō),我們可以看到錯(cuò)誤消息不是來(lái)自Javascript,而是來(lái)自您編寫(xiě)或引入的代碼
無(wú)法從“application/json”加載模型“fsfdsfsdfs”的模型元數(shù)據(jù) - utils.loadJSON():無(wú)法解析 JSON 響應(yīng) - SyntaxError:位置 0 處的 JSON 中出現(xiàn)意外標(biāo)記 <
將其分解如下。
最后一部分是由 Javascript 發(fā)出的:
utils.loadJSON(): Failed to parse JSON response - SyntaxError: Unexpected token < in JSON at position 0
前面的部分是由非Javascript解釋器的代碼故意發(fā)出的。
Failed to load model metadata for model 'fsfdsfsdfs from 'application/json'
有人編寫(xiě)了“無(wú)法加載模型的模型元數(shù)據(jù)”這句話。這在 Javascript 解釋器中不存在。它是在添加的一些代碼模塊中。有一條錯(cuò)誤消息故意打印出來(lái),然后顯示底層的 Javascript 錯(cuò)誤消息。
問(wèn)題的核心是 JSON.parse(不是JSON.stringify),它對(duì) XML 或 HTML 字符串而不是 JSON 字符串進(jìn)行操作。
您確定 Javascript new File 函數(shù)實(shí)際上正在創(chuàng)建一個(gè)文件并將其保存在您的文件系統(tǒng)上嗎?
您告訴我們,當(dāng)您放入"myfile.json"metaModelSrc 時(shí),代碼就可以工作。這意味著當(dāng)代碼從計(jì)算機(jī)的文件系統(tǒng)讀取文件(即您可以在文件資源管理器或 Finder 或 Nautilus 等中看到的文件)時(shí),代碼可以正常工作。
但是,我認(rèn)為 javascript“新文件”功能實(shí)際上并沒(méi)有將文件保存到計(jì)算機(jī)的硬盤(pán)上,不是嗎?你能看看運(yùn)行時(shí)是否創(chuàng)建了一個(gè)嗎?
添加回答
舉報(bào)