页面不工作错误,节点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"}); }