Hata: Rota.put() bir geri arama işlevi gerektirir , ancak [object Undefined] var - Bu hata nedir?

0

Soru

Neden bu hatayı almaya devam ettiğime dair hiçbir fikrim yok:

C:\Users\yurit\Desktop\EcommcereAPI\node_modules\express\lib\router\route.js:202
        throw new Error(msg);
        ^

Error: Route.put() requires a callback function but got a [object Undefined]
    at Route.<computed> [as put] (C:\Users\yurit\Desktop\EcommcereAPI\node_modules\express\lib\router\route.js:202:15)
    at Function.proto.<computed> [as put] (C:\Users\yurit\Desktop\EcommcereAPI\node_modules\express\lib\router\index.js:510:19)
    at Object.<anonymous> (C:\Users\yurit\Desktop\EcommcereAPI\routes\user.js:7:8)
    at Module._compile (internal/modules/cjs/loader.js:1085:14)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
    at Module.load (internal/modules/cjs/loader.js:950:32)
    at Function.Module._load (internal/modules/cjs/loader.js:790:12)
    at Module.require (internal/modules/cjs/loader.js:974:19)
    at require (internal/modules/cjs/helpers.js:93:18)
    at Object.<anonymous> (C:\Users\yurit\Desktop\EcommcereAPI\index.js:5:19)
[nodemon] app crashed - waiting for file changes before starting...

Node_modules dosyasıyla ilgili bir sorun olduğunu düşündüm, bu yüzden sildim ve yeniden yükledim. Bu işe yaramadı. İşte sorunu içerebilecek diğer dosyalarım

kullanıcı.js: Sanırım burada kullanıcıda.js dosyası, ancak diğer 2 ile ilişkili olan dosyayı gönderirim

const { verifyToken, verifyTokenAndAuthorization } = require("./verifyToken");

const router = require("express").Router();

//UPDATE
router.put("/:id", verifyTokenAndAuthorization, async (req, res) => {
    if (req.body.password) {
      req.body.password = CryptoJS.AES.encrypt(
        req.body.password,
        process.env.PASS_SEC
      ).toString();
    }
  
    try {
      const updatedUser = await User.findByIdAndUpdate(
        req.params.id,

        {
          $set: req.body,
        },
        { new: true }
      );
      res.status(200).json(updatedUser);
    } catch (err) {
      res.status(500).json(err);
    }
  });


module.exports = router;

verifyToken.js:

const jwt = require("jsonwebtoken");

const verifyToken = (req, res, next) => {
    const authHeader = req.headers.token;
    if (authHeader){
        jwt.verify(token, process.env.JWT_SEC, (err,user) => {
            if(err) res.status(403).json("Token is not valid!");
            req.user = user;
            next();
        })
    } else {
      return res.status(401).json("You are not authenticated");
    }

    const verifyTokenAndAuthorization = (req, res, next) => {
      verifyToken(req, res, () => {
        if (req.user.id === req.params.id || req.user.isAdmin){
            next();
        } else {
          rez.status(403).json("You are not all to do that!");
        }
      })
    }

    module.exports = { verifyToken, verifyTokenAndAuthorization};
}

auth.js:

const router = require("express").Router();
const User = require("../models/User");
const CryptoJS = require("crypto-js");
const jwt = require("jsonwebtoken");

//REGISTER
router.post("/register", async (req,res) => {
    const newUser = new User({
      username: req.body.username,
      email: req.body.email,
      password: CryptoJS.AES.encrypt(req.body.password, process.env.PASS_SEC).toString(),
    });

    try {
      const savedUser = await newUser.save();
      res.status(201).json(savedUser);
    } catch (err) {
      res.status(500).json(err);
    }
});

//LOGIN

router.post("/login", async (req,res) => {
  try {
    const user = await User.findOne({ username: req.body.username});
    !user && res.status(401).json("Wrong credentials!")

    const hashedPassword = CryptoJS.AES.decrypt(
      user.password,
      process.env.PASS_SEC
    );
    const OriginalPassword = hashedPassword.toString(CryptoJS.enc.Utf8);

    OriginalPassword !== req.body.password && res.status(401).json("Wrong credentials");

    const accessToken = jwt.sign(
      {
        id: user._id,
        isAdmin: user.isAdmin,
      },
      process.env.JWT_SEC,
      {expiresIn: "3d"}
    );

    const { password, ...others} = user._doc;

    res.status(200).json({...others, accessToken});
  } catch (err) {
    res.status(500).json(err);
  }
});

module.exports = router;

Bu yazı çoğunlukla kodsa özür dilerim, başka ne söyleyeceğimi bilmiyorum çünkü dürüst olmak gerekirse sorunun ne olduğunu bilmiyorum. Herhangi bir yardım çok takdir edilecektir

express javascript node.js router
2021-11-21 22:02:55
1

En iyi cevabı

0

Eğer sen console.log(verifyToken) veya verifyTokenAndAuthorization alacaksın undefined

Yarattığın yolla ilgili bir sorun var. verifyTokenAndAuthorization işlev ve sizin module.exports. Bu module.exports dışarıda olmalı verifyToken ve... verifyTokenAndAuthorization işlev içinde iç içe olmamalıdır verifyToken işlev.

2021-11-22 02:43:39

Diğer dillerde

Bu sayfa diğer dillerde

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................