【问题标题】:Why is req.body always undefined for me为什么我的 req.body 总是未定义
【发布时间】:2017-03-23 11:44:15
【问题描述】:

我无法访问任何请求参数。例如req.body.username。由于某种原因, req.body 始终未定义。端点是/youtube

app.js

    var express = require('express');
    var path = require('path');
    var favicon = require('serve-favicon');
    var logger = require('morgan');
    var cookieParser = require('cookie-parser');
    var bodyParser = require('body-parser');

    var index = require('./routes/index');
    var users = require('./routes/users');

    var app = express();

    // view engine setup
    app.set('views', path.join(__dirname, 'views'));
    app.set('view engine', 'jade');

    // uncomment after placing your favicon in /public
    //app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
    app.use(logger('dev'));
    app.use(bodyParser.json());
    app.use(bodyParser.urlencoded({ extended: false }));
    app.use(cookieParser());
    app.use(express.static(path.join(__dirname, 'public')));

    app.use('/', index);
    app.use('/users', users);

    // catch 404 and forward to error handler
    app.use(function(req, res, next) {
      var err = new Error('Not Found');
      err.status = 404;
      next(err);
    });

    // error handler
    app.use(function(err, req, res, next) {
      // set locals, only providing error in development
      res.locals.message = err.message;
      res.locals.error = req.app.get('env') === 'development' ? err : {};

      // render the error page
      res.status(err.status || 500);
      res.render('error');
    });

    module.exports = app;

server.js

var express   =    require("express");
var mysql     =    require('mysql');
var app       =    express();

var pool      =    mysql.createPool({
    connectionLimit : 100, //important
    host     : 'localhost',
    user     : 'user',
    password : 'pass',
    database : 'db',
    debug    :  false
});


var router = express.Router();// get an instance of the express Router

// middleware to use for all requests
router.use(function(req, res, next) {
    // do logging
    console.log('Incoming request');
    next(); // make sure we go to the next routes and don't stop here
});


app.get("/",function(req,res){-
    handle_database(req,res);
});

router.route('/youtube')

    .post(function(req, res) {

        console.log(req.body); // always undefined

    })
    .get(function(req, res) {

    });

app.use('/api', router);

app.listen(3000);
console.log("Listening on port 3000....")

【问题讨论】:

  • 你输入了res.body,应该是req.body
  • @ponury-kostek 我应该是 req.body。我一定是在尝试某些东西时改变了它并忘记了它。我现在在这个问题上改变了它。谢谢
  • 您正在创建两个独立的 Express 应用程序,一个在 app.js 中,一个在 server.js 中。所以第一个的任何配置都不会应用于第二个。
  • @robertklep 应该怎么改?我必须在 server.js 中要求 app.js 吗?
  • @code511788465541441 我不确定您的应用程序是如何构建的(您如何启动它?)。

标签: javascript mysql node.js express


【解决方案1】:

在 server.js 中的 var app = express(); 正下方添加这 3 行:

var bodyParser = require('body-parser');  
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));

现在您的 req.body 将不再是 undefined

【讨论】:

    猜你喜欢
    • 2022-01-05
    • 2020-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-11
    • 2022-01-16
    • 2023-03-29
    相关资源
    最近更新 更多