0

我使用 Express Validator 作为更新表单。但是当我运行我的函数时,我有这个错误。

Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client

我检查了我所有的代码,我想用 POST 做一点回应

{
    "errors": [
        {
            "location": "params",
            "param": "password",
            "msg": "password is required"
        },
        {
            "location": "body",
            "param": "confirmPassword",
            "msg": "password and passwordConfirm are not equals",
            "value": "amazingPassword"
        }
    ]
}

我不明白为什么密码的位置在“参数”中??我所有的变量都在位置正文中,但密码和确认密码都在位置参数中。

我不知道我是否清楚。Express Validator 没问题,问题是向客户端发送响应的节点崩溃。

我的应用程序使用正文解析器,var 密码的副本,有可能吗?

我的邮递员配置: 我的邮递员配置

谢谢您的帮助 :)

4

1 回答 1

0

我想你正在使用这个:

const { check } = require('express-validator/check');

这个函数检查所有内容:正文、cookie、标题、参数、查询。根据您的屏幕截图,您没有发送密码,所以检查不知道它应该在哪里。

如果您希望正文中有密码,请使用

const {body, query, param} = require('express-validator/check');
body('password').exists()

第二个错误只是说您已经发送了标头(验证错误)并尝试再做一次(可能在 catch 中发送了一些错误,不知道,分享您的控制器代码)

于 2018-03-23T11:42:39.987 回答