688 Stimmen

BodyParser ist veraltet express 4

Ich verwende Express 4.0 und bin mir bewusst, dass der Body Parser aus dem Express-Kern entfernt wurde. Ich verwende den empfohlenen Ersatz, bekomme jedoch folgende Fehlermeldung:

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

Wo finde ich diese angeblichen Middleware? Oder sollte ich diesen Fehler nicht bekommen?

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

1voto

aashray jain Punkte 331

body-parser veraltet bodyParser: verwenden Sie einzelne JSON / urlencodierte Middleware-Node-Module\ express\lib\router\layer.js:95:5

express deprecated req.host: Verwenden Sie stattdessen req.hostname node_modules\body-parser\index.js:100:29

body-parser veraltet undefiniert erweitert: bieten Sie die erweiterte Option node_modules\body-parser\index.js:105:29 an

Express oder body-parser müssen nicht aktualisiert werden

Diese Fehler werden behoben. Befolgen Sie diese Schritte :-

  1. app.use(bodyParser.urlencoded({extended: true})); // Dies hilft beim Encodieren.
  2. app.use(bodyParser.json()); // dies unterstützt das JSON-Format

Es wird funktionieren.

Viel Spaß beim Programmieren!

1voto

Aathi Punkte 1601

Überprüfen Sie diese Antwort Stripe-Webhook-Fehler: Es wurden keine Signaturen gefunden, die der erwarteten Signatur für das Nutzlast entsprechen

// Verwenden Sie den JSON-Parser für alle Nicht-Webhook-Routen
app.use((req, res, next) => {
  if (req.originalUrl === '/webhook') {
    next();
  } else {
    express.json()(req, res, next);
  }
});

// Stripe erfordert den Rohkörper zur Konstruktion des Ereignisses
app.post('/webhook', express.raw({type: 'application/json'}), (req, res) => {
  const sig = req.headers['stripe-signature'];

  let event;

  try {
    event = stripe.webhooks.constructEvent(req.body, sig, webhookSecret);
  } catch (err) {
    // Bei einem Fehler, protokollieren Sie ihn und geben Sie die Fehlermeldung zurück
    console.log(`Fehlermeldung: ${err.message}`);
    return res.status(400).send(`Webhook-Fehler: ${err.message}`);
  }

  // Ereignis erfolgreich konstruiert
  console.log('Erfolg:', event.id);

  // Senden Sie eine Antwort zur Bestätigung des Empfangs des Ereignisses
  res.json({erhalten: true});
});

0voto

estani Punkte 20703

In meinem Fall wurde typescript + vs-Code fälschlicherweise als veraltet markiert: Bildbeschreibung hier eingeben

Aber wenn Sie den Quellcode überprüfen:

/** @deprecated */
declare function bodyParser(
    options?: bodyParser.OptionsJson & bodyParser.OptionsText & bodyParser.OptionsUrlencoded,
): NextHandleFunction;

declare namespace bodyParser {

sehen Sie, dass es der Konstruktor sein sollte, nicht der Namespace. Entweder typescript oder vs-Code liegt falsch. Alles gut, in diesem Fall tritt keine Veraltetung auf (bodyParser als Namespace).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X