Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.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 如何在express.js中捕获JSON帖子中的错误_Node.js_Express - Fatal编程技术网

Node.js 如何在express.js中捕获JSON帖子中的错误

Node.js 如何在express.js中捕获JSON帖子中的错误,node.js,express,Node.js,Express,我正在express.js中创建一个API,用户在其中发布JSON 我在客户机请求中将内容类型设置为application/json。如果我发布有效的JSON,一切都很好。但是,posintg格式错误的JSON导致express抛出以下错误 字符串(370)“语法错误:意外标记} at Object.parse(本机) 在IncomingMessage上。(/var/www/vhost/rest-v1/node/node_modules/express/node_modules/connect/

我正在express.js中创建一个API,用户在其中发布JSON

我在客户机请求中将内容类型设置为application/json。如果我发布有效的JSON,一切都很好。但是,posintg格式错误的JSON导致express抛出以下错误

字符串(370)“语法错误:意外标记} at Object.parse(本机) 在IncomingMessage上。(/var/www/vhost/rest-v1/node/node_modules/express/node_modules/connect/lib/middleware/json.js:76:27) 在IncomingMessage.EventEmitter.emit(events.js:92:17) 在_stream_readable.js:910:16 在进程中。(node.js:415:13)


如何捕获此错误,以便向用户发送更有意义的错误消息?

user Express内置的错误处理中间件或使用您自己的中间件覆盖它:

谢谢。我已经发现了这一点,但我希望对每一条路线都以不同的方式处理错误。我在想我是否需要再问一个问题。是否有一种方法可以禁用自动JSON解析,以便我可以在route函数中执行此操作?解析JSON的Express中间件通过bodyParser调用。删除该中间件,您可以在路由中自己解析它。但是,我建议坚持自动解析,只返回400个错误的请求HTTP响应。试图智能地处理格式错误的JSON既极其复杂,又存在潜在的安全漏洞。