javascript - Node - req.body 有值但返回未定义

标签 javascript node.js express body-parser

所以在 Node/Express 中,我可以使用 body-parser 和 console.log(req) 来查看 body 值并返回带有 body 值的 JSON:

 body: { email: [Object], cname: '', pass1: '', pass2: '' },

但是 req.body 总是返回 undefined。我知道定位很重要,而且我已经看到很多线程,但我的路由在单独的文件中,所以我认为这会导致一些问题。

这是 app.js 代码:

//(1) Server Config
const express = require('express')
const app = express()
const port = 3000
app.set('view engine', 'pug')
const path = require('path')
app.use('/', express.static(path.join(__dirname, '/')))

//(2) Modules
const bodyParser = require('body-parser')
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({extended: true}))

//(3) Routes
app.use(require('./routes/account_create'))
app.use(require('./routes/account_register'))

//(4) Server Start
app.listen(port, () => console.log(`Listening on ${port}`))
mongoose.connect(`mongodb://${db_server}/${db_name}`)
    .then(() => console.log('Connected to DB'))
    .catch(err => console.log(err))

表单在 account_create 路由上填写,然后 POST 在 account_register 上。

这里是account_register:

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

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

module.exports = router

为了以防万一,这里是 account_create 路由和 PUG 的代码:

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

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

module.exports = router

html
    head
        h1 Create Account
        form(action='/account_register' method='POST')
            .form-group
                label(for='email') E-Mail
                input#email(type='email', name='email')
            .form-group
                label(for='cname') Character Name
                input#cname(type='text', name='cname')
            .form-group
                label(for='pass1') Password
                input#pass1(type='password', name='pass1')
                label(for='pass2') Password Confirmation
                input#pass2(type='password', name='pass2')
            button.btn(type='submit') Register
        script(src='../scripts/account_create.js')

最佳答案

您可以像这样替换 account_register 文件:

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

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

module.exports = router

问题是函数下的req和res放错了

关于javascript - Node - req.body 有值但返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56881723/

相关文章:

javascript - 对包含正零和负零的数组进行排序

javascript - V8 会自动缓存编译后的正则表达式吗?

javascript - JSON.stringify 在新创建的对象( Node 、javascript)上失败

javascript - Node.js Express app.get : Browser want to open the link

javascript - TypeScript - 自定义类元素的 Array.map

javascript - 为什么不同的网络浏览器对这段代码显示不同的输出?

node.js - 如何计算 Node 内 MongoDB 集合中的文档数量?

node.js - Common.js 和 Node.js 的工厂模式

javascript - 你能请这个选项(扩展 : false) used in express. urlencoded 吗?

javascript - jQuery 日期选择器 minDate 未设置