मुझे पता नहीं क्यों मैं इस त्रुटि हो रही है:
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 फ़ाइल है, तो मैं नष्ट कर दिया और फिर से इसे स्थापित किया. है कि काम नहीं किया. यहाँ मेरे अन्य फ़ाइलों शामिल हो सकता है कि समस्या
user.js: मुझे लगता है कि यह यहाँ में user.js फ़ाइल है, लेकिन बीमार के बाद अन्य 2 के साथ जुड़े फाइल है सिर्फ जड़ना
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;
मैं माफी माँगता हूँ अगर इस पोस्ट में ज्यादातर कोड, मैं बस पता नहीं और क्या कहने के लिए, क्योंकि मैं ईमानदारी से पता नहीं क्या समस्या है. किसी भी मदद की बहुत सराहना की जाएगी