Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ERR_EMPTY_响应/无法获取node.js_Javascript_Node.js - Fatal编程技术网

Javascript ERR_EMPTY_响应/无法获取node.js

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

我试图创建一个简单的登录/注册页面,但我的获取代码导致错误(ERR_EMPTY_RESPONSE和TypeError:Failed to fetch)。我尝试了console.log(“can login”)来查看代码是否会返回一些东西,确认它可以工作,但是,这两个函数都不会返回任何东西。我是新来的,所以请饶了我吧

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
            })