我收到错误“res.json() 不是函数”

问题描述 投票:0回答:1

我正在进行 fetch 调用,并将结果存储在 res 中。当我将其转换为 json 并通过 const data = res.json(); 将其存储在变量中时它给出了一个错误。 这是我的客户端代码:

const handleLogin = async (e) =>{
      e.preventDefault();
      try{
        dispatch(signInStart());
        const res = fetch(`${URL}/api/user/login`,{
            method: 'POST',
            headers: {
                'Content-Type': 'application/json',
            },
            body: JSON.stringify(user),
        });
        
        const data = await res.json();
        if(data.success === false){
            dispatch(signInFailure(data.message));
            return;
        }
        dispatch(signInSuccess(data));
        navigate('/upload');
      } catch(error){
        dispatch(signInFailure(error.message));
      }
  } ;

这是我的服务器端代码:

export const login = async(req,res,next) => {
    const { email, password } = req.body;
    try {
        const validUser = await User.findOne({email});  
        if(!validUser) return next(errorHandler(404,"User not found!"));
        const validPassword = bcryptjs.compareSync(password,validUser.password);
        if(!validPassword) return next(errorHandler(401,"Wrong credentials!"));

        const token = jwt.sign({id: validUser._id},process.env.JWT_SECRET);
        const { password: pass, ...rest} = validUser._doc;  // Excluding password from the user data we are getting
        res.cookie('access_token',token,{httpOnly: true, expires:new Date(Date.now() + 25892000000)})
        .status(200).json(rest)  //Expires after 30 days

    }catch(error) {
        next(error);
    }
};

我需要用户数据才能使其在所有页面上可用,但我无法解决此错误。

reactjs web-development-server
1个回答
0
投票

它就像你正在尝试使用你的承诺值。你应该像这样等待你的 fetch 调用:

const res = await fetch(`${URL}/api/user/login`,{
 method: 'POST',
 ...,
});
© www.soinside.com 2019 - 2024. All rights reserved.