javascript - BCrypt TypeError:无法读取未定义 NodeJ 的属性“值”
问题描述
我正在尝试在密码中添加盐,但出现此错误:
(节点:12652)UnhandledPromiseRejectionWarning:TypeError:无法读取未定义的属性“值”
(节点:12652)UnhandledPromiseRejectionWarning:未处理的承诺拒绝。此错误源于在没有 catch 块的情况下抛出异步函数内部,或拒绝未使用 .catch() 处理的承诺。(拒绝编号:1)
(节点:12652)[DEP0018] DeprecationWarning:不推荐使用未处理的承诺拒绝。将来,未处理的 Promise 拒绝将使用非零退出代码终止 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
}
解决方案
您导出了一个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());
而已。现在,我认为您的代码将起作用。
推荐阅读
- share - Linkedin:共享网址摘要未出现
- python - Django - 将 InMemoryUploadedFile 发布到外部 REST api
- rstudio - 如何在执行简单操作的同时保持 Rstudio 中的数字分数格式?
- fortran - 为什么在 Fortran 中作为参数传递时,内部函数 exp 无法工作?
- grouping - 在 Tableau 中为具有相同记录数的变量创建 bin
- html - 内容是隐藏的移动设备
- .net - 1890年代时间倒流了吗?如何解释负值的 DateTime.ToOADate 令人惊讶的图表?
- qt - 在由布局管理的项目上检测到的锚点。这是未定义的行为;改用 Layout.alignment
- json - 从spark中的json中的数组中提取Json
- c# - “Win32_CDROMDrive”类的“SerialNumber”属性如何在与 WMI 分开请求时返回 null?