Node.js 主体解析器捕获错误的JSON

Node.js 主体解析器捕获错误的JSON,node.js,json,express,error-handling,body-parser,Node.js,Json,Express,Error Handling,Body Parser,是否有可能在主体解析器中捕获错误的JSON语法 下面的代码显示了我的尝试。问题是,当我得到响应时,我无法访问任何错误状态: JSON中第57位的“SyntaxError:意外标记”… 这将作为HTML页面提供给调用者。我宁愿捕捉这个错误,并格式化一个漂亮的JSON作为响应 代码尝试: class ExampleServer extends Server { constructor() { ... this.app.use(bodyParser.json

是否有可能在
主体解析器中捕获错误的JSON语法

下面的代码显示了我的尝试。问题是,当我得到响应时,我无法访问任何
错误状态

JSON中第57位的“
SyntaxError:意外标记”…

这将作为HTML页面提供给调用者。我宁愿捕捉这个错误,并格式化一个漂亮的JSON作为响应

代码尝试:

class ExampleServer extends Server {
    constructor() {

        ...

        this.app.use(bodyParser.json());
        this.app.use(bodyParser.urlencoded({extended: true}));
        this.app.use((err) => {
            if (err instanceof SyntaxError && err.status === 400 && 'body' in err) {
                Logger.Err('Bad JSON.');
            }
        });

        ...
    }
}
我通过POST正文发送的损坏JSON:

{
    "numberValue": 6,
    "requiredValue": "some string here"]
}
body parser
express
的版本我使用:

"body-parser": "^1.19.0",
"express": "^4.17.1",

如何捕获损坏的JSON错误?

是的,可以指示Express捕获错误的JSON语法。尝试调整此代码:

this.app.use((error: any, req: any, res: any, next: any) => {
  if (error instanceof SyntaxError) {
    // Catch bad JSON.
    res.sendStatus(400);
  } else {
    next();
  }
});