web-dev-qa-db-ja.com

bodyParserはexpress 4で廃止予定です。

私はエクスプレス4.0を使用しています、そして私はボディパーサーがエクスプレスコアから取り出されたことを知っています、私は推奨された代替品を使用しています、しかし私は得ています

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

このミドルウェアはどこにありますか。または私はこのエラーを受けていないのですか?

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

2014-06-19の時点で、bodyParser() コンストラクタ の使用は 非推奨 となっています。

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

メソッドを個別に呼び出す必要があります

app.use(bodyParser.urlencoded());

app.use(bodyParser.json());

等々。

まだurlencodedで警告を受けているのなら、使う必要があります。

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

extended configオブジェクトキーは、デフォルト値を持たなくなったため、明示的に渡す必要があります。

Express> = 4.16.0を使用している場合、ボディパーサーはメソッドexpress.json()およびexpress.urlencoded()の下に再追加されました。

643
Ben Fortune

欲しい ゼロ警告 ?このように使用してください。

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

説明 extendedオプションのデフォルト値は廃止されました。つまり、trueまたはfalseの値を明示的に渡す必要があります。

147
smajl

Expressのより古いバージョンでは、我々は使用しなければなりませんでした:

app.use(express.bodyparser()); 

ボディパーサーはnodeとexpressの間のミドルウェアだったからです。今、私たちはそれを使う必要があります:

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

body-parserは、フォームの入力を読み取り、req.body 'body-parser'を介してアクセス可能なjavascriptオブジェクトとして保存する高速ミドルウェアです(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

extendedがtrueに設定されている場合、収縮した(圧縮された)ボディは膨張します。 extendedがfalseに設定されている場合、収縮したボディは拒否されます。

5
Parth Raval

Express-generatorを使うことでスケルトンプロジェクトが生成されるというあなたの意見は何ですか?without deprecated messagesはあなたのログに現れました

このコマンドを実行

npm install express-generator -g

それでは、このコマンドをyour Node projects folderに入力して、新しいExpress.jsスターターアプリケーションを作成します。

express node-express-app

そのコマンドは、expressに、node-express-appという名前の新しいNode.jsアプリケーションを生成するように指示します。

次に、コマンドを使用してGo to the newly created project directoryinstall npm packagesおよびstart the app

cd node-express-app && npm install && npm start
1

追加中に見つけました

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

手助けをしてください、時々それはエクスプレスがそれをどのように扱うかを決めるのはあなたの質問の問題です。

例えば、あなたのパラメータは本体ではなく _ url _ で渡されるかもしれません。

そのような場合は、 body url の両方のパラメータを取得し、利用可能な方を使用する必要があります(以下の場合はbodyパラメータを優先します)。

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