【问题标题】:I get the error that the body is not defined in expres?我收到正文未在 express 中定义的错误?
【发布时间】:2020-12-30 10:04:19
【问题描述】:

表达js正文未定义错误 我分享了下面的文件。我非常生气。不会出现错误。请帮我。 虽然我再做一次,但我得到了同样的错误 我搜索了很多,但没有一个解决方案有效。

main.js

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


                    router.get('/', (req,res)=>{
                        res.render('site/index')
                    })

                    router.get('/login', (req,res)=>{
                        res.render('site/login')
                    })

                    router.get('/register', (req,res)=>{
                        res.render('site/register')
                    })

                    router.get('/postcreate', (req,res)=>{
                        res.render('site/postcreatepage')
                    })

                    router.get('/postupdate', (req,res)=>{
                        res.render('site/postupdatepage')
                    })

                    router.post('/post/post', (req,res)=>{
                        console.log(req.body)
                    })




                    module.exports = router

查了很多遍都没解决

app.js

        const express = require('express')
        const path = require('path')
        const app = express()
        const port= 3000
        const hostname =  '127.0.0.1'
        const mongoose = require('mongoose')
        const main = require('./routes/main')
        var bodyParser  = require('body-parser');



        app.use('/', main)

        app.use(express.static('static'))





        mongoose.connect('mongodb://127.0.0.1/nodemon_db',{
            useNewUrlParser: true,
            useUnifiedTopology:true
        })


        app.engine('handlebars', require('exphbs'))
        app.set('view engine','handlebars')
        

        app.use(bodyParser.urlencoded({ extended: false }))

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

        app.listen(port, hostname, ()=> console.log(`Example app listening on port http://${hostname}:${port}/`))

虽然我再次这样做,但我得到了同样的错误

html

        <html>
        <head>

        </head>
        <body>
            
        <form action="post/post" method="post">

        <input  name="title"><br>

        <input   name="content"><br>
        <button type="submit">But</button>
        </form>
                
        </body> 
        </html>

【问题讨论】:

  • 应用您的供应商中间件在应用路由之前,顺序很重要。同样在你说的路线上不起作用你没有回应所以会挂起
  • 你怎么能举个例子
  • 类似于这里的答案enter link description here我相信你需要body parser

标签: javascript html node.js express mongoose


【解决方案1】:
  1. 在您的路由中,您必须返回响应,否则请求将挂起:

main.js

router.post('/post/post', (req,res)=>{
    console.log(req.body)

    const resObject = {
        ... do something with req.body ...
    };

    return res.status(201).json(resObject);
});
  1. 在您的应用入口点中,在您的配置和中间件之后设置您的路由:

app.js

const express = require('express')
const path = require('path')
const app = express()
const port= 3000
const hostname =  '127.0.0.1'
const mongoose = require('mongoose')
const main = require('./routes/main')
var bodyParser  = require('body-parser');

/* config */
mongoose.connect('mongodb://127.0.0.1/nodemon_db',{
    useNewUrlParser: true,
    useUnifiedTopology:true
})

/* Middleware */
app.use(express.static('static'))
app.engine('handlebars', require('exphbs'))
app.set('view engine','handlebars')
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())

/* Routes */
app.use('/', main)

app.listen(port, hostname, () => console.log(`Example app listening on port http://${hostname}:${port}/`)

【讨论】:

  • 我不敢相信。我怎么没看到这样的东西?我感激你。非常感谢
猜你喜欢
  • 1970-01-01
  • 2022-06-27
  • 2022-11-19
  • 1970-01-01
  • 2020-11-17
  • 2022-07-26
  • 1970-01-01
  • 1970-01-01
  • 2020-06-03
相关资源
最近更新 更多