Javascript 无法读取属性';车身';nodejs中未定义的

Javascript 无法读取属性';车身';nodejs中未定义的,javascript,node.js,passport.js,Javascript,Node.js,Passport.js,我有一张nodejs登记表 在此表格中,我必须检查数据库中是否存在电话号码 我使用passportJs来执行此操作 但当我发送请求时,它会显示以下错误: 无法读取未定义的属性“body” 现在我在这里写下我的代码: 这是middlware中设置的通行证: require('./passport/passport-local'); app.use(passport.initialize()); app.use(passport.session()) 这是我的项目中的

我有一张nodejs登记表

在此表格中,我必须检查数据库中是否存在电话号码

我使用
passportJs
来执行此操作

但当我发送请求时,它会显示以下错误:

无法读取未定义的属性“body”

现在我在这里写下我的代码:

这是middlware中设置的通行证:

     require('./passport/passport-local');
     app.use(passport.initialize());
     app.use(passport.session())
这是我的项目中的
passport local
文件:

    const passport = require('passport');
const localStrategy = require('passport-local').Strategy;
const UserModel = require('../models/users')

passport.serializeUser(function(user, done) {
    done(null, user.id);
  });

  passport.deserializeUser(function(id, done) {
    User.findById(id, function(err, user) {
      done(err, user);
    });
  });

passport.use('local.register', new localStrategy({
    phoneNumberField: 'phoneNumber',
    passReqToCallback: true,
}, (req, phoneNumber, done) => {
    UserModel.findOne({ phoneNumber: phoneNumber }, (error, user) => {
        if (error) return done(error);
        if (!user) return done(error, false, req.flash('errors', 'This Phone Number exist . Please Choose the Other Phone Number'))

        const addUSer = new UserModel({
            name: req.body.name,
            family: req.body.family,
            phoneNumber: req.body.phoneNumber,
            password: req.body.password
        })

        addUSer.save((err) => {
            if (err) return done(err, false, req.flash('errors', 'امکان ثبت کاربر با این مشخصات وجود ندارد'));
            done(null, addUSer);
        });
    })
}))
这是我的控制器:

   RegisterProcess(req, res) {

    var validateResult = validationResult(req);

    if (!validateResult.isEmpty()) {
        const errors = validateResult.array();
        let messages = [];
        errors.forEach(error => {
            messages.push(error.msg);
        });
        req.flash('errors', messages)
        res.redirect('/auth/register');
    }else{
        this.register();
    }
}

register(req, res, next) {
    passport.authenticate('local.register', {
        successRedirect: '/admin',
        failureRedirect: '/auth/register',
        failureMessage: true
    })(req, res, next)
}
现在有什么问题?我怎样才能解决这个问题

**编辑:**

完整堆栈跟踪:

TypeError: Cannot read property 'body' of undefined
at Strategy.authenticate (/home/mrcoder/Projects/Nodejs/OnlineStore/node_modules/passport-local/lib/strategy.js:71:29)
at attempt (/home/mrcoder/Projects/Nodejs/OnlineStore/node_modules/passport/lib/middleware/authenticate.js:366:16)
at authenticate (/home/mrcoder/Projects/Nodejs/OnlineStore/node_modules/passport/lib/middleware/authenticate.js:367:7)
at RegisterController.register (/home/mrcoder/Projects/Nodejs/OnlineStore/app/http/controller/auth/RegisterController.js:36:11)
at RegisterController.RegisterProcess (/home/mrcoder/Projects/Nodejs/OnlineStore/app/http/controller/auth/RegisterController.js:27:18)
at Layer.handle [as handle_request] (/home/mrcoder/Projects/Nodejs/OnlineStore/node_modules/express/lib/router/layer.js:95:5)
at next (/home/mrcoder/Projects/Nodejs/OnlineStore/node_modules/express/lib/router/route.js:137:13)
at middleware (/home/mrcoder/Projects/Nodejs/OnlineStore/node_modules/express-validator/src/middlewares/check.js:15:13)
at processTicksAndRejections (internal/process/task_queues.js:97:5)

为了能够从提交的html表单解析数据,您需要一个合适的解析中间件。一个常见的库是。您可以按如下方式进行设置:

const bodyParser = require('body-parser');
...
// use bodyParser middleware for parsing application/xwww-form-urlencoded
app.use(bodyParser.urlencoded({ extended: true })); 

为了能够从提交的html表单解析数据,您需要一个合适的解析中间件。一个常见的库是。您可以按如下方式进行设置:

const bodyParser = require('body-parser');
...
// use bodyParser middleware for parsing application/xwww-form-urlencoded
app.use(bodyParser.urlencoded({ extended: true })); 

哪一行触发错误<代码>名称:请求主体名称,?请发布完整的stacktrace并指向触发错误的代码中有问题的行。请确保您使用的是某种类型的主体解析器或使用主体的express.json()@EduardoFellipe i-parser@alfasin我更新了问题,并将其放在堆栈中trace@kianoushdortaj服务器上的哪个调用会触发此错误?您发布的代码提到至少3个不同的passport调用+中间件。请关注问题,尽管您希望提供尽可能多的信息,但只发布相关信息很重要,否则会造成信息“迷雾”,使分析更加困难。哪一行触发错误<代码>名称:请求主体名称,?请发布完整的stacktrace并指向触发错误的代码中有问题的行。请确保您使用的是某种类型的主体解析器或使用主体的express.json()@EduardoFellipe i-parser@alfasin我更新了问题,并将其放在堆栈中trace@kianoushdortaj服务器上的哪个调用会触发此错误?您发布的代码提到至少3个不同的passport调用+中间件。请关注问题,尽管您希望提供尽可能多的信息,但只发布相关信息很重要,否则会造成信息“迷雾”,使分析更加困难。