Nodejs body-parser返回' undefined'

时间:2018-04-05 23:12:08

标签: javascript node.js express body-parser

我在视频教程上做某些事情时遇到很多困难,看起来很简单。我已经使用带有虚拟html的express(通过ejs)设置了一个节点应用程序。我试图捕获用户通过输入字段(如搜索栏)输入的数据并尝试验证该节点是否正在捕获该数据。

我有一个带有此表单的ejs文件。

<form action="/input" method="POST" enctype="multipart/form-data">
        <div class="input-group">
            <input type="text" class="form-control" name="id" placeholder="Enter the id of the product you would like to buy">
            <div class="input-group-append">
                <button class="btn btn-outline-secondary" name="submit" type="submit"><i class="fas fa-cart-plus mr-2"></i>Add to Cart</button>
            </div>
        </div>
</form>

在我的app.js文件中,按以下顺序,我:

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

// setting up views
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.use(express.static(path.join(__dirname, 'public')));

// middleware for bodyParser
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));

// render page 
app.get('/input', function(req, res){
    res.render('input');
});

// get input from text input 
app.post('/input', function(req, res) {
    console.log(req.body.id);
})

运行它会返回&#34; undefined&#34;。我已经尝试将req.body.id换成req.body,它在控制台中返回一个空对象{}。任何帮助,将不胜感激。我不确定我错过了什么。

1 个答案:

答案 0 :(得分:0)

为自己承担节点服务器实例的世界感到自豪!大多数情况下,您遇到的问题是Express特定的。最初配置Express时声明任何内容的顺序非常严格。尝试移动身份解析器中间件设置下方的视图配置。我设置了数百个Express应用程序,我的常规goto第一个配置总是:

        app.disable('x-powered-by')
        app.disable('etag')
        app.use(bodyParser.json())
        app.use(bodyParser.urlencoded({ extended: true }))
        app.use(cookieParser())
        app.use(compress())
        app.use(methodOverride())
        app.use(helmet())
        app.use(cors())  

在我为模板框架进行任何注册之前。