Почему я получаю эту ошибку каждый раз, когда использую API (POST)
SyntaxError: неожиданный токен l в JSON в позиции 18 в JSON.parse (<анонимно>) при разборе (/Users/.../Desktop/ecommerceapi/node_modules/body-parser/lib/types/json.js:89:19) в /Users/.../Desktop/ecommerceapi/node_modules/body-parser/lib/read.js:121:18 в invokeCallback (/Users/.../Desktop/ecommerceapi/node_modules/raw-body/index.js:224:16) по завершении (/Users/.../Desktop/ecommerceapi/node_modules/raw-body/index.js:213:7) в IncomingMessage.onEnd (/Users/.../Desktop/ecommerceapi/node_modules/raw-body/index.js:273:7) в IncomingMessage.emit (узел: события: 532: 35) в endReadableNT (узел: внутренний/потоки/читаемый:1346:12) в processTicksAndRejections (узел: внутренний/процесс/task_queues:83:21)
Это весь мой код: (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.user_name
}
);
!user && res.status(401).json("Wrong User Name");
const hashedPassword = CryptoJS.AES.decrypt(
user.password,
process.env.PASS_SEC
);
const originalPassword = hashedPassword.toString(CryptoJS.enc.Utf8);
const inputPassword = req.body.password;
originalPassword != inputPassword &&
res.status(401).json("Wrong Password");
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;
Я использую Postman, чтобы использовать API для POST этого
{ "username": sultan "password": 12345qwer }
а это index.js:
const express = require("express");
const app = express();
mongoose = require("mongoose")
const dotenv = require("dotenv");
const userRoute = require("./routes/user");
const authRoute = require("./routes/auth");
dotenv.config();
mongoose
.connect(process.env.MONGO_URL)
.then(() => console.info("DB Connection Successfull!"))
.catch((err) => {
console.info(err);
});
app.use(express.json());
app.use("/api/auth", authRoute);
app.use("/api/users", userRoute);
app.listen(process.env.PORT || 50, () => {
console.info("Backend server is running!");
});
он должен дать мне информацию о пользователях или «Неправильный пароль», но в ответ выдает указанную выше ошибку!
можно ли двойные кавычки "sultant" и "12345qwer"?
@tkausl, что вы имеете в виду, не является допустимым JSON, я следил за учебным пособием на YouTube, и это именно то, что написано, это сработало с парнем, который написал этот код, но не со мной. Спасибо за ответ.
@ l4rnaud Я пробовал двойные кавычки, но тоже не сработало. Спасибо за ответ.
I followed a tutorial on YouTube and that's exactly what's written
Значит видео неправильное или видео что-то скрывает. Это просто неверный JSON, и точка.
@tkausl, не могли бы вы сказать, какая часть кода неверна? Я отредактировал вопрос, пожалуйста, перепроверьте его. Спасибо.
@l4rnaud сказал вам, в чем проблема.
двойные кавычки и запятая отсутствуют { "имя пользователя": "султан", "пароль": "12345 qwer" }
Это недопустимый JSON. Откуда ты это взял