Я пытаюсь зарегистрировать нового пользователя в приложении, но я всегда получаю эту ошибку «secretOrPrivateKey должен иметь значение».Сервер работает хорошо, когда я нажимаю на кнопку регистрации, но в то же время выдает эту ошибку.Я прикрепил ниже вывод из моего терминала, когда я регистрирую нового пользователя!
это файл index.js
// load environment variables
require("dotenv").config();
const express = require("express");
const app = express();
const cors = require("cors");
const bodyParser = require("body-parser");
const errorHandler = require("./handlers/error");
const authRoutes = require("./routes/auth");
const messagesRoutes = require("./routes/messages");
const { loginRequired, ensureCorrectUser } = require("./middleware/auth");
const db = require("./models");
const PORT = process.env.PORT || 8081;
app.use(cors());
app.use(bodyParser.json());
app.use("/api/auth", authRoutes);
app.use(
"/api/users/:id/messages",
loginRequired,
ensureCorrectUser,
messagesRoutes
);
app.get("/api/messages", loginRequired, async function(req, res, next) {
try {
let messages = await db.Message.find()
.sort({ createdAt: "desc" })
.populate("user", {
username: true,
profileImageUrl: true
});
return res.status(200).json(messages);
} catch (err) {
return next(err);
}
});
app.use(function(req, res, next) {
let err = new Error("Not Found");
err.status = 404;
next(err);
});
app.use(errorHandler);
app.listen(PORT, function() {
console.log(`Server is starting on port ${PORT}`);
});
это файл .env:
SECRET_KEY = urethndvkngkjdbgkdkdnbdmbmdbdf
Здесь я использую секретный ключ:
const db = require("../models");
const jwt = require("jsonwebtoken");
exports.signin = async function(req, res, next) {
try {
// finding a user
let user = await db.User.findOne({
email: req.body.email
});
// Destructure some properties from the user
let { id, username, profileImageUrl } = user;
let isMatch = await user.comparePassword(req.body.password);
// checking if their Password matches what we sent to the server
if (isMatch) {
// will make the token
let token = jwt.sign(
{
id,
username,
profileImageUrl
},
process.env.SECRET_KEY
);
return res.status(200).json({
id,
username,
profileImageUrl,
token
});
} else {
return next({
status: 400,
message: "Invalid Email/Password."
});
}
} catch (e) {
return next({ status: 400, message: "Invalid Email/Password." });
}
};
exports.signup = async function(req, res, next) {
try {
// create a user using the user model
let user = await db.User.create(req.body);
let { id, username, profileImageUrl } = user;
// create a token(signing a token)
let token = jwt.sign(
{
id,
username,
profileImageUrl
},
// after siging in that object, pass the secret key
process.env.SECRET_KEY
);
return res.status(200).json({
id,
username,
profileImageUrl,
token
});
} catch (err) {
// if the validation fails
if (err.code === 11000) {
// respond with this msg
err.message = "Sorry, that username and/or email is taken";
}
return next({
status: 400,
message: err.message
});
}
};
Когда я регистрирую нового пользователя, он работает, и пользователь добавляется в БД, но все еще получает ошибку.упомянутый «секретный или закрытый ключ должен иметь значение»:
Mongoose: users.insert({ messages: [], _id: ObjectId("5c797464ef55a33c70207df3"), email: 'test@test.com', username: 'test', password: '$2a$10$kU2QVvCMGWv84JbhD8DYs.QNVwQXeDvhxAmUPvLSA4TytiFqvNlkC', profileImageUrl: '', __v: 0 })
Mongoose: users.findOne({ email: 'test@test.com' }, { fields: {} })
Mongoose: users.insert({ messages: [], _id: ObjectId("5c797490ef55a33c70207df4"), email: 'test222@test.com', username: 'test222', password: '$2a$10$ALqubvIZ2xRSUr5GputTY.uRxQ77cGW9Fcgc8zlOjJ/aq3CBn1bj6', profileImageUrl: '', __v: 0 })
Mongoose: users.insert({ messages: [], _id: ObjectId("5c7974dfef55a33c70207df5"), email: 'test2222@test.com', username: 'test2222', password: '$2a$10$QKXt9EsOPMNDfubP4UuT8OK6tksz59ZZFYtHFY7AyfDh5zEiO2jWa', profileImageUrl: '', __v: 0 })
снимок экрана с ошибкой, когда я нажимаю на регистрацию