在位置 0 的 JSON 中出现意外的语法错误 <
Posted
技术标签:
【中文标题】在位置 0 的 JSON 中出现意外的语法错误 <【英文标题】:getting syntax error unexpected < in JSON at position 0 【发布时间】:2022-01-10 02:54:36 【问题描述】:我在这个程序中没有任何 JSON 文件,只有 js 和 html 我的理论是程序运行 html 就像一个 JSON 文件我正在使用 replit 和 kaboom 来运行游戏
HTML 代码:
<!DOCTYPE html>
<html>
<head>
<title>kaboom</title>
<meta charset="utf-8">
<style>
*
margin: 0;
html,
body
width: 100%;
height: 100%;
overflow: hidden;
canvas
display: block;
</style>
</head>
<body>
kaboom
</body>
</html>
js代码:
import kaboom from "kaboom";
// initialize context
kaboom();
scene();
const SPEED = 320
var METEORX = 2
const NiceX = 20
//onsole.log(str(METEORX))
// load assets
loadSprite("grass", "sprites/grass.png");
loadSprite("Player", "sprites/Player.png");
loadPedit("meteor", "sprites/meteor.pedit");
loadPedit("air Meteor", "sprites/air Meteor.pedit");
// add a character to screen
const meteor = add ([
sprite("air Meteor"),
pos(rand(0, width()), 40),
area(),
move(DOWN, 300),
"meteor",
"enemy",
cleanup(20)
])
var player = add([
// list of components
"player",
sprite("Player"),
pos(center()),
area(),
body(),
health(3)
]);
add([
rect(width(), 48),
"ground",
pos(0, height() - 48),
outline(4),
area(),
solid(),
color(127, 200, 255),
])
onCollide("player", "enemy", () =>
player.hurt(1.5)
)
loadPedit("ground meteor", "sprites/ground meteor.pedit");
var difficulty = 5;
onCollide("enemy", (niceMeteor) =>
addExplosion()
destroy(niceMeteor)
)
onKeyPress("space", () =>
if (player.grounded())
player.jump()
)
onKeyDown("d", () =>
player.move(SPEED, 0)
)
onKeyDown("a", () =>
player.move(-SPEED, 0)
)
【问题讨论】:
从您的问题中不清楚是什么触发了错误。你能提供更多细节吗? (这就是为什么堆栈溢出要求文本与代码一起包含在问题中,以后请不要用垃圾邮件绕过它) 【参考方案1】:最可能的情况是您指定的精灵之一不存在。在这种情况下,您还应该看到一个错误:ERROR: sprite not found: "<your sprite name here>"
。 (我认为在这种情况下,kaboom 试图将响应解析为 JSON 是一个错误,因为它得到了内容类型为 text/html 的 404 响应)。
另一种可能性(无论多么不可能)是您的一个精灵文件已损坏。 Kaboom的.pedit
文件格式其实是一个JSON文件,图片数据嵌入为base64:
"version": "1",
"width": 32,
"height": 32,
"palette": [[0,0,0,255],[255,255,255,255],[255,255,128,255],[255,128,255,255],[0,128,128,255],[128,0,255,255],[255,0,128,255],[0,255,255,255]],
"anims":
"Test": "from":0,"to":1,"loop":true
,
"frames":[
"data:image/png;base64,...",
"data:image/png;base64,..."
]
因此,如果其中一个文件在编辑过程中损坏,也可能导致此错误。通常为了弄清楚这一点,我建议您查看堆栈跟踪以查找正在抛出的错误,该错误在您的 Web 浏览器的开发人员控制台中可见。但是,Kaboom 不会为对loadPedit
的调用生成良好的堆栈跟踪。所以你最好的选择可能是在每次加载调用之前放置一些console.log('loading sprite XXX')
语句。一旦您知道哪个 pedit 文件无效,您可以将该文件从 whatever.pedit
重命名为 whatever.json
并检查您的 repl 中的内容。
【讨论】:
以上是关于在位置 0 的 JSON 中出现意外的语法错误 <的主要内容,如果未能解决你的问题,请参考以下文章
在附近解析时,位置 XXX 处 JSON 中出现意外标记的错误
渲染中的 Laravel + Vue 错误:“SyntaxError:JSON 中位置 0 的意外标记 u”
渲染中的 Laravel + Vue 错误:“SyntaxError:JSON 中位置 0 的意外标记 u”