Javascript ERR_EMPTY_响应/无法获取node.js
我试图创建一个简单的登录/注册页面,但我的获取代码导致错误(ERR_EMPTY_RESPONSE和TypeError:Failed to fetch)。我尝试了console.log(“can login”)来查看代码是否会返回一些东西,确认它可以工作,但是,这两个函数都不会返回任何东西。我是新来的,所以请饶了我吧Javascript ERR_EMPTY_响应/无法获取node.js,javascript,node.js,Javascript,Node.js,我试图创建一个简单的登录/注册页面,但我的获取代码导致错误(ERR_EMPTY_RESPONSE和TypeError:Failed to fetch)。我尝试了console.log(“can login”)来查看代码是否会返回一些东西,确认它可以工作,但是,这两个函数都不会返回任何东西。我是新来的,所以请饶了我吧 router.post("/register", (req, res) => { console.log(JSON.stringify(req.bo
router.post("/register", (req, res) => {
console.log(JSON.stringify(req.body))
let {username, password} = req.body;
let err = validate.username(username);
if(err) throw err;
err = validate.password(password);
if(err) throw err;
db.collection("users").find({username: username}), function(err, username){
if(err){
throw err;
} if(username){
console.log(username);
console.log("Username in use!");
} else {
console.log("Not in use!");
db.collection("users").insertOne({ "username": username.value, "password": password.value });
}
}
});
router.post("/login", (req, res) => {
console.log(JSON.stringify(req.body))
let {username, email, password} = req.body;
db.collection("users").find({username: username, password: password}), function(err, results){
if(err){
throw err;
} if(results.length > 0){
console.log("Can login");
} else {
throw("Username and/or Password is incorrect!");
}
}
});
<script>
function register() {
let data = {
username: document.querySelector("#user").value,
password: document.querySelector("#pass").value,
}
console.log(JSON.stringify(data))
fetch("/api/register", {
method: "POST",
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify(data),
}).then((res) => {
console.log(res.json());
});
}
function login() {
let data = {
username: document.querySelector("#userlogin").value,
password: document.querySelector("#passlogin").value,
}
fetch("/api/login", {
method: "POST",
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify(data),
}).then((res) => {
console.log(res.json());
});
}
</script>
</head>
<body>
<h1>Register:</h1>
<input autocomplete="username" id = "user" placeholder="username">
<input autocomplete="current-password" id = "pass" type = "password "placeholder="password">
<button onclick="register()">Register</button>
<br>
<br>
<br>
<br>
<input autocomplete="username" id = "userlogin" placeholder="username">
<input autocomplete="current-password" id = "passlogin" type = "password" placeholder="password">
<button onclick="login()">Login</button>
</body>
router.post(“/register”,(req,res)=>{
log(JSON.stringify(req.body))
让{username,password}=req.body;
让err=validate.username(用户名);
如果(错误)抛出错误;
err=validate.password(密码);
如果(错误)抛出错误;
db.collection(“users”).find({username:username}),函数(err,username){
如果(错误){
犯错误;
}如果(用户名){
console.log(用户名);
log(“用户名正在使用!”);
}否则{
log(“未使用!”);
db.collection(“users”).insertOne({“username”:username.value,“password”:password.value});
}
}
});
路由器.post(“/login)”,(请求、回复)=>{
log(JSON.stringify(req.body))
让{username,email,password}=req.body;
db.collection(“users”).find({username:username,password:password}),函数(err,results){
如果(错误){
犯错误;
}如果(results.length>0){
console.log(“可以登录”);
}否则{
抛出(“用户名和/或密码不正确!”);
}
}
});
函数寄存器(){
让数据={
用户名:document.querySelector(“#user”).value,
密码:document.querySelector(“#pass”).value,
}
log(JSON.stringify(数据))
获取(“/api/寄存器”{
方法:“张贴”,
标题:{
“接受”:“应用程序/json”,
“内容类型”:“应用程序/json”
},
正文:JSON.stringify(数据),
})。然后((res)=>{
log(res.json());
});
}
函数登录(){
让数据={
用户名:document.querySelector(“#userlogin”).value,
密码:document.querySelector(“#passlogin”).value,
}
获取(“/api/login”{
方法:“张贴”,
标题:{
“接受”:“应用程序/json”,
“内容类型”:“应用程序/json”
},
正文:JSON.stringify(数据),
})。然后((res)=>{
log(res.json());
});
}
登记册:
登记
登录
非常感谢您的帮助!谢谢:)您的
登录
-处理程序中没有发送任何响应,因此您会在客户端收到一个空响应错误。将其更改为:
router.post("/login", (req, res) => {
console.log(JSON.stringify(req.body))
let {username, email, password} = req.body;
db.collection("users").find({username: username, password: password}), function(err, results){
if(err){
res.status(500).json({errorMsg: err.message});
} else if(results.length > 0){
res.json({ // send whatever you need here });
} else {
res.status(401).json({errorMsg: "wrong user/password"});
}
}
});
在客户端代码中,还应处理错误:
fetch("/api/login", { ... })
.then((res) => {
console.log(res.json());
}).catch(err) => {
// handle error here
})