类型错误:无法解构“req.body”的属性“用户名”,因为它未定义

问题描述 投票:0回答:1

我遇到了一些错误。几天来我一直在尝试修复它,但没有成功。 我正在开发一个项目,每当我尝试注册用户时,都会收到错误消息。 这是代码。

const express = require('express');
const bcrypt = require('bcrypt');
const session = require('express-session');
const flash = require('connect-flash');
const mongoose = require('mongoose');
const Admin = require('./model/admin.js');
const User = require('./model/user.js');
    
mongoose
   .connect("mongodb://127.0.0.1:27017/tailor") // to connect to mongoDB
   .then(()=>{console.log('Mongo server has started')})
   .catch(()=>{console.log('Connection to Mongo Failed')})

const app = express()
 
app.use(flash());
app.set('view engine', 'ejs')
app.use(express.static('public')) 

const port = 3000;

app.post('/register', async (req, res)=>{
    try {
        const {username, email, password, address, fullname, passport, phone} = req.body
        console.log(req.body)
        const foundUser = await User.findOne({username:username})
        if(foundUser) {
            req.flash('info', 'User Already Exist')
            res.redirect('/signin')
        }
        const hashedPassword = await bcrypt.hash(password, 10)
        const user = new User ({
            username:username,
            email:email,
            passport:passport,
            address:address,
            fullname:fullname,
            phone:phone,
            passport:hashedPassword,
            active:true,
            role:'USER'
        })
        await user.save()
    } catch (error) {
        console.log(error)
    }
    res.redirect('/')
})

app.listen(port, ()=>{
    console.log(`Server is running on port ${port}`)
}) 

这是我收到的错误消息。

TypeError: Cannot destructure property 'username' of 'req.body' as it is undefined.
    at C:\Users\go\Downloads\project wdd 2\app.js:60:16
    at Layer.handle [as handle_request] (C:\Users\go\Downloads\project wdd 2\node_module
s\express\lib\router\layer.js:95:5)

    

我会等待回复。

javascript node.js express mongoose ejs
1个回答
-1
投票

您必须确保在定义路由之前定义所有配置。如果这样做,您可以继续使用express.bodyParser()。

示例如下:

var express = require('express'),
    app     = express(),
    port    = parseInt(process.env.PORT, 10) || 8080;

app.configure(function(){
  app.use(express.bodyParser());
});

app.listen(port);
    
app.post("/someRoute", function(req, res) {
  console.log(req.body);
  res.send({ status: 'SUCCESS' });
});
                **OR**

最新版本的 Express (4.x) 已将中间件从核心框架中分离出来。如果需要body解析器,需要单独安装

and then do this in your code

var bodyParser = require('body-parser')
var app = express()

// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))

// parse application/json
app.use(bodyParser.json())

一旦您安装并使用了 body-parser,它将为您提供预期的 req.body 值。

© www.soinside.com 2019 - 2024. All rights reserved.