javascript - 无法读取未定义的属性“主体”

标签 javascript node.js express

我试图将护照逻辑放入 Controller 文件中,但问题是当我将逻辑放入 Controller 中时,它告诉我“无法读取未定义的属性“主体””,但是当我将代码移至索引时,所有内容都会路由向右走

index.js/controller 问题出在“postLogin ”

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


module.exports = {
  async postRegister(req, res, next) {

      const newUser = new User({
        username: req.body.username,
        email: req.body.email,
        image: req.body.image

      })

      await User.register( newUser , req.body.password);
      res.redirect('/');
    },
  postLogin(req, res, next) {
    passport.authenticate('local', { successRedirect: '/' ,failureRedirect: '/login' })();
  }
}

index.js/路由

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

const { postRegister, postLogin } = require('../controllers/index');
const { errorHandler } = require('../middleware/index');
/* GET home page. */
router.get('/', (req, res, next) => {
  res.render('index', { title: 'Surf Shop - Home' });
});

/* User routs */

//Get register
router.get('/register', (req, res, next) => {res.send('/register')});

//POST register
router.post('/register', errorHandler(postRegister));

//Get login
router.get('/login', (req, res, next) => { res.send('GET /Login') });

//POST login
router.post('/login', postLogin);

module.exports = router;

图像表单 postman

enter image description here

最佳答案

末尾的括号是故意的吗:

passport.authenticate('local', { successRedirect: '/' ,failureRedirect: '/login' })() <----

参数未传递的问题?

router.post('/login', postLogin);

变成:

router.post('/login', () => { 
    postLogin(req, res, next) 
});

正确解析:

非常有帮助,但参数未在此处传递

passport.authenticate('local', { successRedirect: '/' ,failureRedirect: '/login' })(here)

所以就变成了

`passport.authenticate('local', { successRedirect: '/' ,failureRedirect: '/login' })(req, res, next)`

关于javascript - 无法读取未定义的属性“主体”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59059460/

相关文章:

javascript - 如何在 node express 中使用 angular 2 斜线路由?

mysql - Sequelize 错误 : you must use the 'as' keyword to specify the alias of the association you want to include. - node.js

javascript - 将字符串值转换为变量值 - JavaScript

javascript - Javascript instanceof 究竟是如何工作的?是慢风格吗?

javascript - 如何解决req.flash不是node js中的函数

node.js - 是什么导致了这个问题: "Timeout of 10000ms exceeded. For async tests and hooks, ensure "done( )"is called;."

javascript - Node js :Cannot read property 'text' of undefined

javascript - 如何在 Angular.js 中创建带参数的验证属性?

javascript - 如何汇总以特定选择器名称开始的所有字段

javascript - 什么是冒号 : in npm script names?