Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.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 res.send Can';t在发送邮件后设置邮件头_Node.js_Express - Fatal编程技术网

Node.js res.send Can';t在发送邮件后设置邮件头

Node.js res.send Can';t在发送邮件后设置邮件头,node.js,express,Node.js,Express,您好,我有下面这个方法,我不能确定为什么我会得到这个错误 错误:发送邮件后无法设置邮件头。 在ServerResponse.OutgoingMessage.setHeader(_http_outgoing.js:335:11) 在ServerResponse.header(/home/kwanso/Projects/myApp/Server/node_modules/express/lib/response.js:718:10) 在ServerResponse.json(/home/kwanso

您好,我有下面这个方法,我不能确定为什么我会得到这个错误

错误:发送邮件后无法设置邮件头。 在ServerResponse.OutgoingMessage.setHeader(_http_outgoing.js:335:11) 在ServerResponse.header(/home/kwanso/Projects/myApp/Server/node_modules/express/lib/response.js:718:10) 在ServerResponse.json(/home/kwanso/Projects/myApp/Server/node_modules/express/lib/response.js:246:10) at/home/kwanso/Projects/myApp/Server/app.js:92:11 在Layer.handle[as handle_request](/home/kwanso/Projects/myApp/Server/node_modules/express/lib/router/Layer.js:95:5) 下一步(/home/kwanso/Projects/myApp/Server/node_modules/express/lib/router/route.js:131:13) 完成时(/home/kwanso/Projects/myApp/Server/node_modules/passport/lib/middleware/authenticate.js:243:13) at/home/kwanso/Projects/myApp/Server/node_modules/passport/lib/middleware/authenticate.js:250:15 通过时(/home/kwanso/Projects/myApp/Server/node_modules/passport/lib/authenticator.js:421:14) 位于Authenticator.transformAuthInfo(/home/kwanso/Projects/myApp/Server/node_modules/passport/lib/Authenticator.js:443:5) at/home/kwanso/Projects/myApp/Server/node_modules/passport/lib/middleware/authenticate.js:247:22 at/home/kwanso/Projects/myApp/Server/node_modules/passport/lib/http/request.js:58:7 通过时(/home/kwanso/Projects/myApp/Server/node_modules/passport/lib/authenticator.js:267:43) 序列化(/home/kwanso/Projects/myApp/Server/node_modules/passport/lib/authenticator.js:276:7) at/home/kwanso/Projects/myApp/Server/app.js:97:3 通过时(/home/kwanso/Projects/myApp/Server/node_modules/passport/lib/authenticator.js:284:9) --从/home/kwanso/Projects/myApp/Server/node_modules/express/lib/application.js调用:629:43(函数 EventEmitter.logerror)

我的方法如下:

passport.use(new LocalStrategy(
      function(username, password, done) {
        console.log("New Local Strategy");
        User.find({ email: username }, function (err, user) {
          console.log(user[0]._doc);
          if (err) { return done(err); }
          if (!user) { return done(null, false); }
          if (user[0]._doc.password != password) { return done(null, false); }
          console.log("sending");
          return done(null, user);
          console.log("sendt");
        });
        return done(null , false);
      }
    ));

    var isValidPassword = function(user, password){
      return true;
    }

    app.post('/login',
    passport.authenticate('local') ,
    function(req, res) {
      console.log("Back");
          res.send(req.user[0]);
    });

    passport.serializeUser(function(user, done) {
      console.log("Serialize User");
      done(null, user);
    });

    passport.deserializeUser(function(user, done) {
      console.log("De Serialize User");
      done(null, user);
    });

这似乎与在回调中调用res.send回调方法有关。这是一个问题吗?

您在LocalStrategy中调用了两次done回调

函数结束时一次(用户名、密码、完成){

从数据库中获取用户后

  if (err) { return done(err); }
  if (!user) { return done(null, false); }
  if (user[0]._doc.password != password) { return done(null, false); }
  console.log("sending");
  return done(null, user);
只要去掉最后一行就行了

  return done(null , false);

您在LocalStrategy中调用了两次done回调

函数结束时一次(用户名、密码、完成){

从数据库中获取用户后

  if (err) { return done(err); }
  if (!user) { return done(null, false); }
  if (user[0]._doc.password != password) { return done(null, false); }
  console.log("sending");
  return done(null, user);
只要去掉最后一行就行了

  return done(null , false);