为了账号安全,请及时绑定邮箱和手机立即绑定

BCrypt TypeError:无法读取未定义 NodeJs 的属性“值”

BCrypt TypeError:无法读取未定义 NodeJs 的属性“值”

胡说叔叔 2021-12-23 19:28:51
我正在尝试向我的密码中添加盐,但出现此错误:(节点:12652)未处理的承诺拒绝警告:类型错误:无法读取未定义的属性“值”(节点:12652)UnhandledPromiseRejectionWarning:未处理的承诺拒绝。这个错误要么是因为在没有 catch 块的情况下抛出了异步函数,要么是因为拒绝了一个没有用 .catch() 处理过的承诺。(拒绝编号:1)(节点:12652)[DEP0018] 弃用警告:不推荐使用未处理的承诺拒绝。将来,未处理的承诺拒绝将使用非零退出代码终止 Node.js 进程。我的身份验证/index.jsconst 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}
查看完整描述

1 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

您导出了一个salt函数。您正在尝试访问它的对象,该对象当然是未定义的,因为该对象没有属性 name 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());


而已。现在,我认为您的代码将起作用。


查看完整回答
反对 回复 2021-12-23
  • 1 回答
  • 0 关注
  • 199 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信