【发布时间】:2023-03-12 16:23:01
【问题描述】:
编辑#2:嗯,重新启动计算机后错误消失了。我没有改变任何东西。又一个美好的一天浪费在一个甚至不存在的错误上......
我猜你可以删除这个?
我的代码在之前没有任何路线的情况下运行良好,但后来这种情况开始发生,我一天都没有提交,所以我不想加载我的最后一次保存。这是什么意思,我该如何解决?
我真的不知道该问什么,因为当您在 google 上搜索“cannot get/null nodejs”时,没有什么类似于我所遇到的情况。如果你想让我发布,我有 500 行代码。
_________________________________
<!doctype html>
<html>
<body>
<div id="signDiv">
Username: <input id="signDiv-username" type="text"></input><br>
Password: <input id="signDiv-password" type="password"></input><br>
<button id="signDiv-signIn">Sign in</button>
<button id="signDiv-signUp">Sign up</button>
</div>
<div id="gameDiv" style="display:none;">
<canvas id="ctx" width="500" height="500" style="border:1px solid #000000;"></canvas>
<div id="chat-text" style="width:500px; height:100px; overflow-y:scroll">
<div>Hello</div>
</div>
<form id="chat-form">
<input id="chat-input" type="text" style="width:500px"></input>
</form>
</div>
<script src="http://cdn.socket.io/socket.io-1.4.5.js"></script>
<script src="http://code.jquery.com/jquery-1.11.1.js"></script>
<script type="text/javascript">
var userip;
</script>
<script type="text/javascript" src="https://l2.io/ip.js?var=userip"></script>
<script type="text/javascript">
document.write("Your IP is :", userip);
</script>
<script>
var socket = io();
//sign in/up
var signDiv = document.getElementById('signDiv');
var signDivUsername = document.getElementById('signDiv-username');
var signDivSignIn = document.getElementById('signDiv-signIn');
var signDivSignUp = document.getElementById('signDiv-signUp');
var signDivPassword = document.getElementById('signDiv-password');
signDivSignIn.onclick = function(){
socket.emit('signIn',{username:signDivUsername.value,password:signDivPassword.value});
};
signDivSignUp.onclick = function(){
socket.emit('signUp',{username:signDivUsername.value,password:signDivPassword.value});
};
socket.on('signInResponse', function(data){
if(data.success){
signDiv.style.display = 'none';
gameDiv.style.display = 'inline-block';
} else
alert("Sign in unsuccessul.");
});
socket.on('signUpResponse', function(data){
if(data.success){
alert("Sign up successful.");
} else
alert("Sign up unsuccessul.");
});
var chatText = document.getElementById("chat-text");
var chatInput = document.getElementById("chat-input");
var chatForm = document.getElementById("chat-form");
var ctx = document.getElementById("ctx").getContext("2d");
ctx.font = "30px Arial";
socket.on('newPositions', function (data){
ctx.clearRect(0,0,500,500);
for(var i=0 ; i < data.player.length; i++)
ctx.fillText(data.player[i].number, data.player[i].x, data.player[i].y);
for(var i=0 ; i < data.bullet.length; i++)
ctx.fillRect(data.bullet[i].x-5, data.bullet[i].y-5, 10, 10);
});
// socket.on('hit event', function(linkbulletdata){
// window.location=String(linkbulletdata);
// signDiv.style.display = 'inline-block';
// gameDiv.style.display = 'none';
// });
socket.on('addToChat', function(data){
chatText.innerHTML += '<div>' + data + '</div>';
});
socket.on('evalAnswer', function(data){
console.log(data);
});
chatForm.onsubmit = function(e){
e.preventDefault();
if(chatInput.value[0] === '/') {
socket.emit('evalServer', chatInput.value.slice(1));
}
else {socket.emit('sendMsgToServerLoadGun', chatInput.value);}
chatInput.value = '';
}
$(document).ready(function(){
$("body").keydown(function(e){
switch(e.which) {
case 32: //space ATTACK
socket.emit('keyPress', {inputId:'attack', state:true});
console.log('shoot');
break;
case 37: // left
socket.emit('keyPress', {inputId: 'left', state: true });
console.log("keycode= " + e.keyCode);
break;
case 38: // up
socket.emit('keyPress', {inputId: 'up', state: true });
console.log("keycode= " + e.keyCode);
break;
case 39: // right
socket.emit('keyPress', {inputId: 'right', state: true });
console.log("keycode= " + e.keyCode);
break;
case 40: // down
socket.emit('keyPress', {inputId: 'down', state: true });
console.log("keycode= " + e.keyCode);
break;
default: return; // exit this handler for other keys
}
e.preventDefault(); // prevent the default action (scroll / move caret)
});
});
document.onmousemove = function(event){
var x = -250 + event.clientX -8;
var y = -250 + event.clientY -8;
var angle = Math.atan2(y,x)/Math.PI*180;
socket.emit('keyPress', {inputId:'mouseAngle', state:angle});
}
document.onmousedown = function(event){
socket.emit('keyPress', {inputId:'attack', state:true});
}
document.onmouseup = function(event){
socket.emit('keyPress', {inputId:'attack', state:false});
}
$(document).ready(function(){
$("body").keyup(function(e){
switch(e.which) {
case 32: //space
console.log('space');
socket.emit('keyPress', {inputId:'attack', state:false});
break;
case 37: // left
socket.emit('keyPress', {inputId: 'left', state: false });
console.log("keycode= " + e.keyCode);
break;
case 38: // up
socket.emit('keyPress', {inputId: 'up', state: false });
console.log("keycode= " + e.keyCode);
break;
case 39: // right
socket.emit('keyPress', {inputId: 'right', state: false });
console.log("keycode= " + e.keyCode);
break;
case 40: // down
socket.emit('keyPress', {inputId: 'down', state: false });
console.log("keycode= " + e.keyCode);
break;
default: return; // exit this handler for other keys
}
e.preventDefault(); // prevent the default action (scroll / move caret)
});
});
</script>
</body>
</html>
【问题讨论】:
-
我会首先寻找您提出请求的任何地方(链接、图像等)。您似乎正在尝试从空值生成 URL。
-
你可以试试调试吗?添加
console.logs 或其他任何内容,直到找到导致问题的行。然后,您可以将问题缩小到相关代码,然后发布。了解如何创建minimal reproducible example。
标签: javascript node.js html server multiplayer