2017-04-10 7 views
0

사용자가 로그인 할 때 암호를 확인하려고하지만 "TypeError : bcrypt.checkPassword가 함수가 아닙니다"라는 오류 메시지가 있습니다.TypeError : bcrypt.checkPassword가 함수가 아닙니다.

내 코드는 여기에 있으며 왜 bcrypt.checkPassword가 함수가 아닌지 이해할 수 없습니다.

[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] 당신은 파일 bcrypt.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]

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'); 
    }); 
}); 
+0

'return bcrypt.checkPassword' 대신'return checkPassword' 만 사용하면됩니다. – Hackerman

답변

0

오후 패키지 bcrypt. 당신이 bcrypt.js에서해야 할 것 같은

db.js을하고 싶은처럼 당신이

require('bcrypt') //no path searches node_modules 

, 당신이 당신의 파일을 포함해야합니다, 당신이 만든 파일을 사용하려면 것, 패키지를 사용하려면

require('./bcrypt.js') //relative paths indicate local files 

두 가지를 혼동하지 않도록 파일 이름을 다르게 지정하는 것이 좋습니다.