如何在 Express/node js 中发送错误响应?

Yur*_*yko 3 node.js express

我有快递服务器。当我发送获取请求时,我使用中间件功能授权来检查数据库中该用户的令牌。但是,我有一个问题:当我尝试发送响应错误时,我的响应向我发送了一个空对象,但是 console.log 向我显示了错误!我究竟做错了什么???这是我的代码:

const auth = async(req,res,next)=>{
try {
    const token = req.header('Authorization').replace('Bearer ','')
    const decode_token = jswt.verify(token,'mytoken')
    const user =await User.findOne({"_id": decode_token._id, "tokens.token":token})


    if (!user){
        throw new Error('Please autorizate')
    }

    req.token = token
    req.user = user

    next()
} catch (error) {
    console.log(error)
    res.status(401).send({"err":error})
}
Run Code Online (Sandbox Code Playgroud)

}

小智 6

在接收错误时发送消息时会出现此问题。

如果要发送文本消息,请将字符串传递给send函数,或使用json函数发送 JSON 对象。

参考:官方快递网站。

例子:

{
   console.log(error)
   res.status(401).send("Bad login")
}

{
   console.log(error)
   res.status(401).json({error: "Bad login"})
}
Run Code Online (Sandbox Code Playgroud)


小智 5

问题是 JavaScript Error 对象不能被字符串化,错误对象不为空你可以访问 err.message 上的错误消息,如果你控制台记录错误你会发现错误对象不为空