NodeJS auth:failed返回为未捕获(在承诺中)语法错误:意外标记“〈”、“〈!doctype..."不是vercel中的有效JSON

myzjeezk  于 2023-01-16  发布在  Node.js
关注(0)|答案(1)|浏览(176)

我现在通过vercel部署了我的MERN web应用程序。不幸的是,我遇到了上面的错误,而实际上我的localhost并不存在。其中,精确定位到这段代码的.then(data =>行:

useEffect(() => {
    fetch(`${process.env.API_URL}/users/profile`, {
      headers: {
        'Content-Type': 'application/json',
        Authorization: `Bearer ${localStorage.getItem('token')}`
      }
    })
     .then(res => res.json())
      // console.log(res.status) added this just to check if it returns 200 and it is

    .then(data => {
      console.log(data)

      if(typeof data._id !== "undefined") {
        setUser({
          id: data._id,
          isAdmin: data.isAdmin
        })
      } else { 
        setUser({
          id: null,
          isAdmin: null
        })
      }
    })
  }, [])

我通过Postman检查了我的API,它返回为

{
  "auth": "failed"
}

这也是与console.log()相同的输出。但这实际上是预期的输出,因为错误是在我的App.js上发生的,而且还不需要登录。我只是不知道为什么它没有作为JSON返回,我也尝试将其作为false返回,但仍然返回auth错误。
更多参考,这是我的API路由和控制器

router.get("/profile", auth.verify, (req, res) => {

    const userData = auth.decode(req.headers.authorization)

    if(userData){       
        userController.getProfile({id: userData.id}).then(result=> res.send(result))
    } else {
        res.send(false)
    }
});

module.exports.getProfile = (reqBody) => {  
    return User.findById(reqBody.id).then((result, error) => {
        if(error){          
            return false
        } else {
            if(result == null){
                return false
            } else {                
                result.password = "************"
                return result
            }
        }
    })
};

这是我唯一需要解决的错误,以使我的Web应用程序正常工作。我希望你能帮助我。非常感谢!

lpwwtiir

lpwwtiir1#

所以,我已经解决了自己的问题,并成功地通过Vercel部署了我的Web应用程序。
我检查了我的Vercel应用程序,并尝试了登录和注册等其他功能。结果发现我的API URL是undefined。因此,我推测在部署过程中设置环境变量时没有单击添加按钮。
由于我不知道如何删除预先存在的已部署应用程序,因此我使用新存储库创建了一个新部署。现在,在输入环境变量及其URL后,请确保单击“添加”按钮,然后单击“部署”按钮。

相关问题