Node.js 将返回错误表示为JSON而不是HTML
我正在用Node.js 将返回错误表示为JSON而不是HTML,node.js,express,Node.js,Express,我正在用ExpressJS开发简单的api,当在express中生成错误时(我无法控制,例如:expressjwt中间件或一些404错误等),它会返回一个html响应。 尝试在postman中更改请求头,但没有更改。我尝试了body解析器并在中间件中设置内容类型头 但是我用res.send()发送的所有响应都正常工作 这是我收到的404错误 <!DOCTYPE html> <html lang="en"> <head> <meta charset
ExpressJS
开发简单的api,当在express中生成错误时(我无法控制,例如:expressjwt
中间件或一些404错误等),它会返回一个html响应。
尝试在postman中更改请求头,但没有更改。我尝试了body解析器
并在中间件中设置内容类型
头
但是我用res.send()
发送的所有响应都正常工作
这是我收到的404错误
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">>Error</title>
</head><body><pre>Cannot GET /test</pre></body>
</html>
>错误
无法获取/测试
有没有办法为应用程序全局设置响应类型?或者这是因为我在postman中做了一些错误?Use可以在添加所有路由后添加错误处理程序
这很好用。将上述代码与
http错误一起使用
[建议使用。此代码堆栈在日志中丢失…@JuanIgnacioBarisich在理想情况下,出于安全原因,服务器错误消息和堆栈跟踪不应在响应中公开。如果出于开发目的,您希望在响应中发送堆栈err。堆栈将包含堆栈。对于生产,日志可以链接到哈希值e发送响应以轻松创建日志searchable@ShreyGupta我一直在谈论服务器日志,而不是http响应。
app.use(function(err, req, res, next) {
console.error(err.message); // Log error message in our server's console
if (!err.statusCode) err.statusCode = 500; // If err has no specified error code, set error code to 'Internal Server Error (500)'
res.status(err.statusCode).send({error : err.message}); // All HTTP requests must have a response, so let's send back an error with its status