[英]TypeError: bcrypt.checkPassword is not a function
I want to check password when users log in but there is an error message "TypeError: bcrypt.checkPassword is not a function". 我想在用户登录时检查密码,但出现错误消息“ TypeError:bcrypt.checkPassword不是函数”。
Here are my code and I don't understand why bcrypt.checkPassword isn't a function. 这是我的代码,我不明白为什么bcrypt.checkPassword不是函数。
[bcrypt.js] [bcrypt.js]
var checkPassword = function(textEnteredInLoginForm, hashedPasswordFromDatabase) {
return new Promise(function(resolve, reject) {
bcrypt.compare(textEnteredInLoginForm, hashedPasswordFromDatabase, function(err, doesMatch){
if (err) {
reject(err);
}
console.log(doesMatch);
resolve(doesMatch);
});
});
};
module.exports.checkPassword = checkPassword;
[db.js] [db.js]
var bcrypt = require('bcrypt');
module.exports.login = function(email, password){
var hashedPasswordFromDatabase;
var query = `SELECT * FROM users WHERE email ='{$req.body.email}'`;
db.query(query).then(function(data){
return hashedPasswordFromDatabase = data[0].password;
console.log("hashedPasswordFromDatabase : "+hashedPasswordFromDatabase);
});
return bcrypt.checkPassword(password).then(function(password, hashedPasswordFromDatabase){
var query = 'SELECT * FROM users';
return db.query(query).then(function(results){
return results.rows;
});
});
};
[ router.js ] [router.js]
var express = require('express');
var cookieSession = require('cookie-session');
var db = require('../configure/db');
var bcrypt = require('../public/js/bcrypt');
var router = express.Router();
router.route('/login')
.get(function(req,res) {
res.render('login'); // url -> /login
})
.post(function(req,res){
db.login(req.body.email, req.body.password)
.then(function(data){
res.redirect('/petition'); // login -> petition
}).catch(function(error){
console.log(error);
res.render('error');
});
});
You made a file called bcrypt.js
and are using the npm package bcrypt
. 您制作了一个名为
bcrypt.js
的文件,并且正在使用npm软件包bcrypt
。
To use the package, like you would need to do in bcrypt.js
, you would 要使用该软件包,就像需要在
bcrypt.js
进行操作bcrypt.js
,
require('bcrypt') //no path searches node_modules
To use the file you created, like you want to do db.js
, you need to include your file 要使用创建的文件,就像要执行
db.js
,您需要包括文件
require('./bcrypt.js') //relative paths indicate local files
I'd suggest naming your file something different so you do not confuse the two. 建议您为文件命名不同,以免混淆两者。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.