繁体   English   中英

授权错误:未定义“未给出回调 function。”

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM