Javascript 游戏中子弹错误:未捕获类型错误:无法读取属性';长度';未定义的

Javascript 游戏中子弹错误:未捕获类型错误:无法读取属性';长度';未定义的,javascript,node.js,express,socket.io,Javascript,Node.js,Express,Socket.io,我真的在为我的计算机科学课制作的多人游戏制作子弹。我使用的是socket.io,我正在从服务器向客户机发送bullet数组,但每当我尝试遍历发送给客户机的数组时,它总是告诉我该数组未定义。有人能为我找到解决办法吗?提前谢谢!我的代码如下: game.js(客户端): var socket=io(); var canvas=document.getElementById('canvas'); canvas.width=window.innerWidth; canvas.height=window.

我真的在为我的计算机科学课制作的多人游戏制作子弹。我使用的是socket.io,我正在从服务器向客户机发送bullet数组,但每当我尝试遍历发送给客户机的数组时,它总是告诉我该数组未定义。有人能为我找到解决办法吗?提前谢谢!我的代码如下:

game.js(客户端):

var socket=io();
var canvas=document.getElementById('canvas');
canvas.width=window.innerWidth;
canvas.height=window.innerHeight;
var context=canvas.getContext('2d');
变量移动={
上:错,
唐:错,
左:错,
右:错
};
变量鼠标={
mouseX:未定义,
穆西:未定义
};
document.addEventListener('keydown',函数(事件){
开关(event.keyCode){
案例65://A
movement.left=true;
打破
案例87://W
movement.up=true;
打破
案例68://D
movement.right=true;
打破
案例83://S
movement.down=true;
打破
}
});
document.addEventListener('keyup',函数(事件){
开关(event.keyCode){
案例65://A
movement.left=false;
打破
案例87://W
movement.up=false;
打破
案例68://D
movement.right=false;
打破
案例83://S
movement.down=false;
打破
}
});
document.addEventListener('click',函数(事件){
mouse.mouseX=event.clientX;
mouse.mouseY=event.clientY;
emit('mousePos',mouse);
});
socket.emit('newplayer');
setInterval(函数(){
socket.emit('movement',movement);
}, 1000 / 30);
socket.on('state',函数(数据){
var=data.p;
var=data.b;
clearRect(0,0,canvas.width,canvas.height);
for(玩家中的变量id){
context.save();
var player=players[id];
var img=新图像();
img.src=https://opengameart.org/sites/default/files/spaceship.pod_.1.green_.png';
context.translate(player.x+player.width/2,player.y+player.height/2);
context.rotate(player.rotation*Math.PI/180);
context.drawImage(img,-player.width/2,-player.height/2,player.width,player.height);
context.fill();
restore();
}

对于(var i=0;i而言,客户端的代码是向后的:

你有:

var bullets = data.p;
var players = data.b;
但它应该是:

var bullets = data.b;
var players = data.p;
game.js:82 Uncaught TypeError: Cannot read property 'length' of undefined
    at r.<anonymous> (game.js:82)
    at r.emit (index.js:83)
    at r.onevent (index.js:83)
    at r.onpacket (index.js:83)
    at r.<anonymous> (index.js:83)
    at r.emit (index.js:83)
    at r.ondecoded (index.js:83)
    at a.<anonymous> (index.js:83)
    at a.r.emit (index.js:83)
    at a.add (index.js:83)
var bullets = data.p;
var players = data.b;
var bullets = data.b;
var players = data.p;