在一个NodeJS+Express路由中,当一个错误和一个特定的消息一起被抛出时,这个消息在响应中的什么位置?

56lgkhnf  于 2022-11-29  发布在  Node.js
关注(0)|答案(1)|浏览(81)

下面的代码:
index.js

var express = require('express');
var router = express.Router();

router.get('/', function(req, res, next) {
  throw new Error("TESTING WHERE MY ERROR MESSAGE GOES IN MY RESPONSE...");
});

module.exports = router;

以及以下使用Jest + Supertest进行的测试:
error.test.js

const app = require("../app");
const supertest = require("supertest");

describe("What is the relation between an Error object throuwn and in the corresponding response?", () => {

    test("Error", async () => {

        await supertest(app)
            .get("/")
            .then(async (res) => {
                console.log(res);
                expect(1).toBe(1);
            });
    });

});

我一直在这个res对象中搜索我用来抛出Error的消息。
在本例中,我假设抛出的Error和测试中捕获的res之间存在关系。

在哪里可以找到res错误消息?

tzxcd3kk

tzxcd3kk1#

你应该有一个errorHandler。如果没有定义错误处理程序,简单地在后端抛出错误将导致后端停止。另一个选择是,你可以发送

res.status(500).json({message:'TESTING WHERE MY ERROR MESSAGE GOES IN MY RESPONSE...'})

如果您想使用errorHandler方法,那么您必须定义错误处理程序,并将其添加到应用的末尾,如app.use(errorHandler)
Express有一个很好的error handling文档

相关问题