页面不工作错误,节点js冻结

我第一次使用Node,在某个响应被触发时遇到麻烦。 在这种情况下,我正在检查用户名和密码是否与DynamoDB中的用户名和密码相匹配。 当用户名和密码不匹配我的数据库时,它redirect到我的页面,但是当它,我所有的console.log输出打印两次(这显然是与Chrome中的favicon有关),如“在线”和“ [pw] + database.js“,但它也冻结了我的IDE和terminal。 然后我在浏览器中看到“页面不工作,本地主机没有发送任何数据”错误。 忽略隐私问题:)想法?

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()res.json()res.send()命中

你应该试一试JSON.parse() ,这是最好的做法。

看起来你的罪魁祸首在这里:

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