我是 JWT 和 Axios 的新手,当我创建帖子时,我不断收到标题中的错误,但使用登录时生成的令牌登录、注册和密码重置工作得很好。请帮忙,
邮政路线
router.post("/create-post", userAuth, createPost);
用户验证
const userAuth = async (req, res, next) => {
const authHeader = req?.headers?.authorization;
if (!authHeader || !authHeader?.startsWith("Bearer")) {
next("Authentication== failed");
}
const token = authHeader?.split(" ")[1];
try {
const userToken = JWT.verify(token, process.env.JWT_SECRET_KEY);
req.body.user = {
userId: userToken.userId,
};
next();
} catch (error) {
console.log(error);
next("Authentication failed");
}
};
创建帖子
export const createPost = async (req, res, next) => {
try {
const { userId } = req.body.user;
const { description, image } = req.body;
if (!description) {
next("You must provide a description");
return;
}
const post = await Posts.create({
userId,
description,
image,
});
res.status(200).json({
success: true,
message: "Post created successfully",
data: post,
});
} catch (error) {
console.log(error);
res.status(404).json({ message: error.message });
}
};
客户端/后期功能
const handlePostSubmit = async (data) => { 设置发布(真) setErrMsg("")
try {
const uri = file && (await handleFileUpload(file));
const newData = uri ? { ...data, image: uri } : data;
console.log(newData);
const res = await apiRequest({
url: "/posts/create-post",
token: user?.token,
data: newData,
method: "POST",
});
console.log(res);
if (res?.status === 'failed') {
setErrMsg(res);
} else {
reset({
description: '',
});
setFile(null);
setErrMsg('');
await fetchPost();
}
setPosting(false);
} catch (error) {
console.log(error);
setPosting(false);
}
};
您标题中的错误是说它找不到您在
JWT.verify(token, process.env.JWT_SECRET_KEY);
函数中提供的密钥。问题出在 process.env.JWT_SECRET_KEY
部分,可能存在拼写错误。与您的 env 文件交叉检查并尝试将其记录到控制台。根据错误,其值为 null
或 undefined
。