bodyParser is verouderd express 4

Ik gebruik express 4.0 en ik ben me ervan bewust dat de body-parser uit de express-kern is gehaald. Ik gebruik de aanbevolen vervanging, maar ik krijg

body-parser deprecated bodyParser: use individual json/urlencoded middlewares server.js:15:12
body-parser deprecated urlencoded: explicitly specify "extended: true" for extended parsing node_modules/body-parser/index.js:74:29

Waar vind ik deze vermeende middleware? of zou ik deze fout niet moeten krijgen?

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);

Antwoord 1, autoriteit 100%

Het betekent dat het gebruik van de bodyParser()constructoris verouderd, per 19-06-2014.

app.use(bodyParser()); //Now deprecated

Je moet de methoden nu apart aanroepen

app.use(bodyParser.urlencoded());
app.use(bodyParser.json());

Enzovoort.

Als je nog steeds een waarschuwing krijgt met urlencoded, moet je

gebruiken

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

De extendedconfiguratieobjectsleutel moet nu expliciet worden doorgegeven, aangezien deze nu geen standaardwaarde heeft.

Als u Express >= 4.16.0 gebruikt, is de body-parser opnieuw toegevoegd onder de methoden express.json()en express.urlencoded().


Antwoord 2, autoriteit 46%

Wilt u nul waarschuwingen? Gebruik het als volgt:

// Express v4.16.0 and higher
// --------------------------
const express = require('express');
app.use(express.json());
app.use(express.urlencoded({
  extended: true
}));
// For Express version less than 4.16.0
// ------------------------------------
const bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
  extended: true
}));

Uitleg: de standaardwaarde van de optie extendedis gedeprecieerd, wat betekent dat u expliciet de waarde True of False moet doorgeven.

Opmerking voor Express 4.16.0 en hoger: body-parser is opnieuw toegevoegd om out-of-the-box ondersteuning voor het parseren van verzoeken te bieden.


Antwoord 3, autoriteit 23%

Als u express > 4.16, u kunt express.json()en express.urlencoded()

gebruiken

De middleware express.json()en express.urlencoded()is toegevoegd om out-of-the-box ondersteuning te bieden bij het parseren van verzoeken. Dit gebruikt de expressjs/body-parsermodulemodule eronder, dus apps die de module momenteel apart nodig hebben, kunnen overschakelen naar de ingebouwde parsers.

BronExpress 4.16.0 – Releasedatum: 2017-09-28

Hiermee,

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

wordt,

const express = require('express');
app.use(express.urlencoded({ extended: true }));
app.use(express.json());

Antwoord 4, autoriteit 6%

Gebruik geen body-parser

Als u Express 4.16+ gebruikt, kunt u het zo doen met express:

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

Je kunt body-parser nu verwijderen met npm uninstall body-parser

Om de POST-inhoud te krijgen, kunt u req.body

gebruiken

app.post("/yourpath", (req, res)=>{
    var postData = req.body;
    //Or if this doesn't work
    var postData = JSON.parse(req.body);
});

Ik hoop dat dit helpt


Antwoord 5, autoriteit 5%

Zelfs ik had hetzelfde probleem. De onderstaande wijziging die ik noemde, loste mijn probleem op.

Als u de versie Express 4.16+gebruikt, dan

  • Misschien heb je een regel aan je code toegevoegd die er als volgt uitziet:
app.use(bodyparser.json()); //utilizes the body-parser package

Snippet uitvouwen


Antwoord 6, autoriteit 2%

In oudere versies van express moesten we het volgende gebruiken:

app.use(express.bodyparser()); 

omdat body-parser een middleware was tussen node en
nadrukkelijk. Nu moeten we het gebruiken als:

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

Antwoord 7

body-parser is een stuk express middleware dat
leest de invoer van een formulier en slaat het op als een javascript
object toegankelijk via req.body
‘body-parser’ moet geïnstalleerd zijn (via npm install --save body-parser) Voor meer info zie: 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

Als extendedis ingesteld op true, worden leeggelopen (gecomprimeerde) lichamen opgeblazen; wanneer extendedis ingesteld op false, worden leeggelopen lichamen afgewezen.


Antwoord 8

Gebruik in plaats van bodyParser.json()gewoon express.json(),
U wilt body-parser

niet installeren

Bijvoorbeeld,

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

Other episodes