此代码重构如何不等效?

How is this Code Refactor Not Equivalent?

我只是不明白这个重构代码是如何不等价的。前者按预期工作,后者 returns 404.

登录成功:

router.post('/login', passport.authenticate('local'), (req, res) => {
  var userInfo = { username: req.user.username };
  res.send(userInfo);
});

抛出错误 xhr.js:178 POST http://localhost:3000/user/login/ 404 (Not Found)

const authController = require('./controllers/authController');
    
router.post('/login', authController.login);

其中 authController 是:

const mongoose = require('mongoose');
const User = require('../models/User');
const passport = require('../passport');

exports.login = passport.authenticate('local'), (req, res) => {
  var userInfo = { username: req.user.username };
  res.send(userInfo);
}

两种情况下的请求headers完全相同。

我错过了什么?

您正在尝试用一个参数替换两个参数。逗号运算符不是那样工作的。您需要公开两个导出。

const authController = require('./controllers/authController');
router.post('/login', authController.authLocal, authController.login);

你的出口将是

const mongoose = require('mongoose');
const User = require('../models/User');
const passport = require('../passport');

exports.authLocal = passport.authenticate('local');
exports.login = (req, res) => {
  var userInfo = { username: req.user.username };
  res.send(userInfo);
}