![](/img/trans.png)
[英]node.bcrypt.js, error: “undefined No callback function was given”
[英]Authorization error: undefined 'No callback function was given.'
所以我目前正在学习 React 课程,但我在后端开发方面遇到了麻烦。 在 Postman 中,我尝试向 http://localhost:3900/api/auth 发送 email 和密码。 当我在 Visual Studio Code 中查看我的终端时,它显示“错误:未定义‘没有给出回调 function。’ ”。 我安装了 bycrpt 并尝试将 bcrypt.compare() function 更改为:
bcrypt.compare(
req.body.password,
user.password,
function (_err, validPassword) {
if (!validPassword)
return res.status(400).send("Invalid email or password.");
const token = user.generateAuthToken();
res.send(token);
}
);
});
但是我仍然遇到同样的错误。
这是我的原始代码的样子:
const Joi = require("joi");
const bcrypt = require("bcrypt-nodejs");
const _ = require("lodash");
const { User } = require("../models/user");
const mongoose = require("mongoose");
const express = require("express");
const router = express.Router();
router.post("/", async (req, res) => {
const { error } = validate(req.body);
if (error) return res.status(400).send(error.details[0].message);
let user = await User.findOne({ email: req.body.email });
if (!user) return res.status(400).send("Invalid email or password.");
const validPassword = await bcrypt.compare(req.body.password, user.password);
if (!validPassword) return res.status(400).send("Invalid email or password.");
const token = user.generateAuthToken();
res.send(token);
});
function validate(req) {
const schema = {
email: Joi.string().min(5).max(255).required().email(),
password: Joi.string().min(5).max(255).required(),
};
return Joi.validate(req, schema);
}
module.exports = router;
我错过了什么???
此错误来自您正在使用的 package。 事实上,bcrypt-nodejs 目前已被弃用。 我建议您将实现移至 bcryptjs。
更多信息请访问https://www.npmjs.com/package/bcryptjs
使用 bcryptjs,您的原始实现将像魅力一样工作
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.