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“新文件”功能实际上并没有将文件保存到计算机的硬盘上,不是吗?你能看看运行时是否创建了一个吗?
添加回答
举报