Authorization error: undefined 'No callback function was given.'
Authorization error: undefined 'No callback function was given.'
所以我目前正在上 React 课程,但我在后端开发方面遇到了麻烦。在 Postman 中,我试图将电子邮件和密码发送到 http://localhost:3900/api/auth。当我在 Visual Studio 代码中查看我的终端时,它显示“错误:未定义 'No callback function was given.'”。我安装了 bycrpt,并尝试将 bcrypt.compare() 函数更改为:
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;
我错过了什么???
此错误来自您正在使用的包。事实上,bcrypt-nodejs 目前已被弃用。我建议您将实现移至 bcryptjs。
在 https://www.npmjs.com/package/bcryptjs
找到更多信息
使用 bcryptjs,您的原始实现将像魅力一样工作
所以我目前正在上 React 课程,但我在后端开发方面遇到了麻烦。在 Postman 中,我试图将电子邮件和密码发送到 http://localhost:3900/api/auth。当我在 Visual Studio 代码中查看我的终端时,它显示“错误:未定义 'No callback function was given.'”。我安装了 bycrpt,并尝试将 bcrypt.compare() 函数更改为:
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;
我错过了什么???
此错误来自您正在使用的包。事实上,bcrypt-nodejs 目前已被弃用。我建议您将实现移至 bcryptjs。
在 https://www.npmjs.com/package/bcryptjs
找到更多信息使用 bcryptjs,您的原始实现将像魅力一样工作