我正在使用express 4.0,我知道主体解析器已经从express核心中取出,我正在使用推荐的替换,但我正在获得

bodyParser:使用单独的json/urlencoded中间件server.js:15:12 对扩展解析显式指定"extended: true" node_modules/ Body-parser /index.js:74:29

我在哪里可以找到这些所谓的中间件?或者我不应该得到这个错误?

var express     = require('express');
var server      = express();
var bodyParser  = require('body-parser');
var mongoose    = require('mongoose');
var passport    = require('./config/passport');
var routes      = require('./routes');

mongoose.connect('mongodb://localhost/myapp', function(err) {
    if(err) throw err;
});

server.set('view engine', 'jade');
server.set('views', __dirname + '/views');

server.use(bodyParser()); 
server.use(passport.initialize());

// Application Level Routes
routes(server, passport);

server.use(express.static(__dirname + '/public'));

server.listen(3000);

当前回答

bodyParser:使用单独的json/urlencoded中间件node_modules\express\lib\router\layer.js:95:5

表达已弃用的请求。host:使用req。主机名改为node_modules\body-parser\index.js:100:29

提供扩展选项node_modules\ Body-parser \index.js:105:29

不需要更新表达式或主体解析器

这些错误将被删除。遵循以下步骤:-

app.use (bodyParser。urlencoded({扩展:真}));//这将有助于编码。 app.use (bodyParser.json ());//这将支持json格式

它会运行。

编码快乐!

其他回答

在旧版本的express中,我们必须使用:

app.use(express.bodyparser()); 

因为体解析器是节点和 表达。现在我们必须像这样使用它:

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

我是在加法的时候发现的

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

有帮助,有时取决于您的查询决定express如何处理它。

例如,可能是在URL中传递参数,而不是在正文中传递参数

在这种情况下,您需要捕获正文参数和url参数,并使用任何可用的参数(在下面的情况中优先使用正文参数)

app.route('/echo')
    .all((req,res)=>{
        let pars = (Object.keys(req.body).length > 0)?req.body:req.query;
        res.send(pars);
    });

体解析器是一个表达中间件 读取表单的输入并将其存储为javascript 通过req.body可访问的对象 'body-parser'必须安装(通过npm install——save body-parser)更多信息请参见:https://github.com/expressjs/body-parser

   var bodyParser = require('body-parser');
   app.use(bodyParser.json()); // support json encoded bodies
   app.use(bodyParser.urlencoded({ extended: true })); // support encoded bodies

当extend设置为true时,则放气(压缩)体将被充气;当extended设置为false时,将拒绝放气体。

不要使用体解析器

如果你使用的是Express 4.16+,你可以用Express这样做:

app.use(express.urlencoded({extended: true}));
app.use(express.json()) // To parse the incoming requests with JSON payloads

你现在可以使用npm uninstall body-parser卸载body-parser

要获得POST内容,可以使用req.body

app.post("/yourpath", (req, res)=>{

    var postData = req.body;

    //Or if this doesn't work

    var postData = JSON.parse(req.body);
});

我希望这对你们有帮助

而不是bodyParser.json(),只需使用express.json(), 您不想安装主体解析器

举个例子,

const express = require("express");

const app = express();
app.use(express.json());