简体   繁体   English

TypeError:bcrypt.checkPassword不是函数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM