页面不工作错误,节点 js 冻结
Page isn't working error, Node js freezes
我是第一次使用 Node,在触发特定响应时遇到了问题。在这种情况下,我正在检查用户名和密码是否与我在 DynamoDB 中的相匹配。当用户名和密码与我的数据库不匹配时,它会重定向到我的页面,但是当它匹配时,我的所有 console.log 输出都会打印两次(这显然与 Chrome 中的图标有关)像 "online" 和“[pw] + database.js”,但它也冻结了我的 IDE 和终端。然后我在浏览器中看到 "The page isn't working, localhost didn't send any data" 错误。忽略隐私问题:) Thoughts?
database.js:
var myDB_lookup = function(username, password, route_callbck){
console.log('Looking up: ' + username);
users.get(username, function (err, data) {
if (err) {
route_callbck(null, "Lookup error: "+err);
} else if (data == null) {
route_callbck(null, null);
} else {
// JSON object that stores password & fullname
var value = JSON.parse(data[0].value);
var pw = value.password;
if (pw.valueOf() == password.valueOf()){
route_callbck({ password : pw }, null);
console.log(pw + "database.js");
}else{
//console.log('wrong password');
route_callbck(null, null);
}
}
});
};
routes.js:
var checkLogin = function(req,res){
var user = req.body.username;
var pw = req.body.password;
console.log(user + pw + "routes");
db.lookup(user, pw, function(data, err) {
if (data!=null){
console.log("online");
//req.session.username = user;
//req.session.password = pw;
}else{
res.render('main.ejs',{error:"Fields incorrect"});
}
});
};
main.ejs:
<form method="post" action="/checklogin">
Enter username here: <br>
<input type="text" name="username" placeholder = "Your username"> <br>
Enter password here: <br>
<input type="password" name="password" placeholder = "Your password">
<input type="submit" value="Log In">
</form>
当我做 module.exports = ...
时,所有功能都链接在 routes.js 中
您可能忘记发送回复,请确保
res.render()
or res.json()
or res.send()
被命中
你应该在 JSON.parse()
周围加上 try/catch,这是最佳做法。
看起来你的罪魁祸首就在这里:
if (data!=null){
console.log("online");
//req.session.username = user;
//req.session.password = pw;
// you need to send the response here too! <<<<<
res.render('main.ejs'); //// !!!
}else{
res.render('main.ejs',{error:"Fields incorrect"});
}
我是第一次使用 Node,在触发特定响应时遇到了问题。在这种情况下,我正在检查用户名和密码是否与我在 DynamoDB 中的相匹配。当用户名和密码与我的数据库不匹配时,它会重定向到我的页面,但是当它匹配时,我的所有 console.log 输出都会打印两次(这显然与 Chrome 中的图标有关)像 "online" 和“[pw] + database.js”,但它也冻结了我的 IDE 和终端。然后我在浏览器中看到 "The page isn't working, localhost didn't send any data" 错误。忽略隐私问题:) Thoughts?
database.js:
var myDB_lookup = function(username, password, route_callbck){
console.log('Looking up: ' + username);
users.get(username, function (err, data) {
if (err) {
route_callbck(null, "Lookup error: "+err);
} else if (data == null) {
route_callbck(null, null);
} else {
// JSON object that stores password & fullname
var value = JSON.parse(data[0].value);
var pw = value.password;
if (pw.valueOf() == password.valueOf()){
route_callbck({ password : pw }, null);
console.log(pw + "database.js");
}else{
//console.log('wrong password');
route_callbck(null, null);
}
}
});
};
routes.js:
var checkLogin = function(req,res){
var user = req.body.username;
var pw = req.body.password;
console.log(user + pw + "routes");
db.lookup(user, pw, function(data, err) {
if (data!=null){
console.log("online");
//req.session.username = user;
//req.session.password = pw;
}else{
res.render('main.ejs',{error:"Fields incorrect"});
}
});
};
main.ejs:
<form method="post" action="/checklogin">
Enter username here: <br>
<input type="text" name="username" placeholder = "Your username"> <br>
Enter password here: <br>
<input type="password" name="password" placeholder = "Your password">
<input type="submit" value="Log In">
</form>
当我做 module.exports = ...
时,所有功能都链接在 routes.js 中您可能忘记发送回复,请确保
res.render()
or res.json()
or res.send()
被命中
你应该在 JSON.parse()
周围加上 try/catch,这是最佳做法。
看起来你的罪魁祸首就在这里:
if (data!=null){
console.log("online");
//req.session.username = user;
//req.session.password = pw;
// you need to send the response here too! <<<<<
res.render('main.ejs'); //// !!!
}else{
res.render('main.ejs',{error:"Fields incorrect"});
}