我正在尝试在密码中添加盐,但是出现此错误:
(节点:12652)UnhandledPromiseRejectionWarning:TypeError:无法读取 未定义的属性“值”
(节点:12652)UnhandledPromiseRejectionWarning:未处理的承诺 拒绝。该错误是由抛出异步内部引起的 没有捕获块或拒绝承诺 未使用.catch()处理。 (拒绝ID:1)
(节点:12652)[DEP0018] DeprecationWarning:未处理的承诺 不推荐使用。将来,应承诺拒绝 未处理将以非零退出终止Node.js进程 代码。
我的auth / index.js
const bcrypt = require('bcrypt');
const saltRounds = 10;
const myPlaintextPassword = 's0/\/\P4$$w0rD';
const someOtherPlaintextPassword = 'not_bacon';
const salt = bcrypt.genSaltSync(saltRounds);
exports.modules = {
salt
}
我的控制器:
const Users = require('../models/users');
const bcrypt = require('bcrypt');
const { salt } = require('../auth/index');
const getUsers = ((req,res) =>
Users.findAll()
.then((result) => {
res.json(result)
})
.catch((error) => { res.json(error) })
)
const addUsers = (async (req,res,next) => {
const name = req.body.name;
const email = req.body.email;
let password = bcrypt.hashSync(req.body.password, salt.value);
const data = {
name,
email,
password
};
console.log(data);
Users.create(data)
.then((result) => { res.json(result) })
.catch((error) => { res.json(error) });
});
module.exports = {
getUsers,
addUsers,
Users
}
答案 0 :(得分:2)
您导出了salt
函数。您尝试访问的对象是未定义的对象,因为该对象没有属性名称value
。因此,它给您带来UnhandledPromiseRejectionWarning
错误。 Salt
函数已经返回一个值。
还有一件事,它应该是module.exports
中的auth/index.js
。
您应该从函数返回一个值。这是您可以重写整个过程的方式。
index.js
const bcrypt = require('bcrypt');
const saltRounds = 10;
const myPlaintextPassword = 's0/\/\P4$$w0rD';
const someOtherPlaintextPassword = 'not_bacon';
module.exports.salt= function(){
return bcrypt.genSaltSync(saltRounds); }
您可能要等待控制器级别的盐功能。
let password = await bcrypt.hashSync(req.body.password, salt());
就是这样。现在,我认为您的代码可以使用。