J'utilise Express 4.0 et je suis conscient du fait que l'analyseur syntaxique a été retiré du noyau Express. J'utilise le remplacement recommandé, mais je reçois
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
Où puis-je trouver ce supposé middleware? ou devrais-je pas obtenir cette erreur?
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);
Cela signifie que l'utilisation du constructeur bodyParser()
a été obsolète au 2014-06-19.
app.use(bodyParser()); //Now deprecated
Vous devez maintenant appeler les méthodes séparément
app.use(bodyParser.urlencoded());
app.use(bodyParser.json());
Etc.
Si vous recevez toujours un avertissement avec urlencoded
, vous devez utiliser
app.use(bodyParser.urlencoded({
extended: true
}));
La clé d'objet de configuration extended
doit maintenant être explicitement transmise, car elle n'a plus de valeur par défaut.
Si vous utilisez Express> = 4.16.0, l'analyseur de corps a été ajouté de nouveau sous les méthodes express.json()
et express.urlencoded()
.
Vous voulez zéro avertissement? Utilisez-le comme ceci:
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: true
}));
Explication: La valeur par défaut de l'option extended
est obsolète, ce qui signifie que vous devez explicitement passer la valeur true ou false.
Dans les anciennes versions d’express, nous devions utiliser:
app.use(express.bodyparser());
car body-parser était un middleware entre node et express. Maintenant, nous devons l'utiliser comme:
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
body-parser est un middleware express qui lit les entrées d'un formulaire et les stocke sous la forme d'un objet javascript accessible via
req.body
'body-parser' doit être installé (vianpm install --save body-parser
). Pour plus d'informations, consultez: 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
Lorsque extended
est défini sur true, les corps déflatés (compressés) sont gonflés. Lorsque extended
est défini sur false, les corps déflatés sont rejetés.
Quelle est votre opinion si vous utilisez Express-Generator, cela générera un projet squelette pour commencer, without deprecated messages
est apparu dans votre journal
lancer cette commande
npm install express-generator -g
A présent, créez une nouvelle application de démarrage Express.js en tapant cette commande dans your Node projects folder
.
express node-express-app
Cette commande indique à Express de générer une nouvelle application Node.js avec le nom node-express-app
.
puis Go to the newly created project directory
, install npm packages
et start the app
à l'aide de la commande
cd node-express-app && npm install && npm start
J'ai trouvé que tout en ajoutant
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: true
}));
aide, parfois c'est une question de votre requête qui détermine comment express le gère.
Par exemple, il se peut que vos paramètres soient passés dans le URL plutôt que dans le corps
Dans ce cas, vous devez capturer les paramètres body et rl et utiliser celui qui est disponible (avec une préférence pour les paramètres de corps dans le cas ci-dessous).
app.route('/echo')
.all((req,res)=>{
let pars = (Object.keys(req.body).length > 0)?req.body:req.query;
res.send(pars);
});