Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.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
Javascript 将头发送到nodejs中的客户端后无法设置头_Javascript_Node.js - Fatal编程技术网

Javascript 将头发送到nodejs中的客户端后无法设置头

Javascript 将头发送到nodejs中的客户端后无法设置头,javascript,node.js,Javascript,Node.js,我有一张登录表。在此表单中,我使用passport查找用户。当我发送请求时,它会显示错误 这是我的代码: passport.local: passport.use('local.login' , new localStrategy({ usernameField : 'phoneNumber', passwordField : 'password', passReqToCallback : true } , (req , phoneNumber, password ,

我有一张登录表。在此表单中,我使用passport查找用户。当我发送请求时,它会显示错误

这是我的代码:

passport.local:

 passport.use('local.login' , new localStrategy({
    usernameField : 'phoneNumber',
    passwordField : 'password',
    passReqToCallback : true
} , (req , phoneNumber, password , done) => {
    UserModel.findOne({'phoneNumber' : phoneNumber} , (err , user)=>{
        if(err) return done(err)
        if(! user || ! user.ValidationPassword(password)) return done(null , false , req.flash('errors' , 'کاربری با این مشخصاتا در سیستم ثبت نشده است'));
        console.log(err,user)
        done(null , user);
    })
}))
async LoginProcess(req, res, next) {

    var result = await this.formValidation(req, res);
    if (result) {
        this.Login(req, res, next)
    }
    return res.redirect('/auth/login');
}


Login(req, res, next) {
    passport.authenticate('local.login', (err, user) => {
        console.log(user, err)
        if (!user) return res.redirect('login')
        req.login(user, err => {
            if (err) console.log(err)
            if (req.body.remember) {
                user.setRememberToken(res)
            }
            return res.redirect('/');
        })
    })(req, res, next)
}
登录控制器:

 passport.use('local.login' , new localStrategy({
    usernameField : 'phoneNumber',
    passwordField : 'password',
    passReqToCallback : true
} , (req , phoneNumber, password , done) => {
    UserModel.findOne({'phoneNumber' : phoneNumber} , (err , user)=>{
        if(err) return done(err)
        if(! user || ! user.ValidationPassword(password)) return done(null , false , req.flash('errors' , 'کاربری با این مشخصاتا در سیستم ثبت نشده است'));
        console.log(err,user)
        done(null , user);
    })
}))
async LoginProcess(req, res, next) {

    var result = await this.formValidation(req, res);
    if (result) {
        this.Login(req, res, next)
    }
    return res.redirect('/auth/login');
}


Login(req, res, next) {
    passport.authenticate('local.login', (err, user) => {
        console.log(user, err)
        if (!user) return res.redirect('login')
        req.login(user, err => {
            if (err) console.log(err)
            if (req.body.remember) {
                user.setRememberToken(res)
            }
            return res.redirect('/');
        })
    })(req, res, next)
}
当我发送请求时,它会显示以下错误:

events.js:292
      throw er; // Unhandled 'error' event
      ^

Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
    at ServerResponse.setHeader (_http_outgoing.js:518:11)
    at ServerResponse.header (/home/mrcoder/Projects/Nodejs/Store/node_modules/express/lib/response.js:771:10)
    at ServerResponse.location (/home/mrcoder/Projects/Nodejs/Store/node_modules/express/lib/response.js:888:15)
    at ServerResponse.redirect (/home/mrcoder/Projects/Nodejs/Store/node_modules/express/lib/response.js:926:18)
    at /home/mrcoder/Projects/Nodejs/Store/app/http/controller/Login.js:25:35
    at allFailed (/home/mrcoder/Projects/Nodejs/Store/node_modules/passport/lib/middleware/authenticate.js:107:18)
    at attempt (/home/mrcoder/Projects/Nodejs/Store/node_modules/passport/lib/middleware/authenticate.js:180:28)
    at Strategy.strategy.fail (/home/mrcoder/Projects/Nodejs/Store/node_modules/passport/lib/middleware/authenticate.js:302:9)
    at verified (/home/mrcoder/Projects/Nodejs/Store/node_modules/passport-local/lib/strategy.js:82:30)
    at /home/mrcoder/Projects/Nodejs/Store/app/passport/registerPassportValidation.js:44:66
    at /home/mrcoder/Projects/Nodejs/Store/node_modules/mongoose/lib/model.js:4883:16
    at /home/mrcoder/Projects/Nodejs/Store/node_modules/mongoose/lib/model.js:4883:16
    at /home/mrcoder/Projects/Nodejs/Store/node_modules/mongoose/lib/helpers/promiseOrCallback.js:24:16
    at /home/mrcoder/Projects/Nodejs/Store/node_modules/mongoose/lib/model.js:4906:21
    at /home/mrcoder/Projects/Nodejs/Store/node_modules/mongoose/lib/query.js:4390:11
    at /home/mrcoder/Projects/Nodejs/Store/node_modules/kareem/index.js:135:16
Emitted 'error' event on Function instance at:
    at /home/mrcoder/Projects/Nodejs/Store/node_modules/mongoose/lib/model.js:4885:13
    at /home/mrcoder/Projects/Nodejs/Store/node_modules/mongoose/lib/helpers/promiseOrCallback.js:24:16
    [... lines matching original stack trace ...]
    at /home/mrcoder/Projects/Nodejs/Store/node_modules/kareem/index.js:135:16
    at processTicksAndRejections (internal/process/task_queues.js:79:11) {
  code: 'ERR_HTTP_HEADERS_SENT'
}
[nodemon] app crashed - waiting for file changes before starting...

有什么问题?如何解决此问题?

在if中的
登录过程
函数中,将此行从
this.Login(req,res,next)
更改为
返回此。登录(req,res,next)
@AhmedKhattab谢谢。它起作用了。在if中的
LoginProcess
函数中,将此行从
this.Login(req,res,next)
更改为
返回此.Login(req,res,next)
@AhmedKhattab谢谢。成功了。