Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 将返回错误表示为JSON而不是HTML_Node.js_Express - Fatal编程技术网

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