bodyParser устарел Экспресс 4



Я использую express 4.0 и я знаю, что парсер тела был взят из express core, я использую рекомендуемую замену, однако я получаю



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



где я могу найти этот предполагаемый middlewares? или я не должен получать эту ошибку?



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

7 ответов:

это означает, что с помощью bodyParser()конструктор была не рекомендуется, по состоянию на 2014-06-19.

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

теперь вам нужно вызвать методы отдельно

app.use(bodyParser.urlencoded());

app.use(bodyParser.json());

и так далее.

если вы все еще получаете предупреждение с urlencoded вы должны использовать

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

The extended ключ объекта config теперь должен быть явно передан, так как он теперь не имеет значения по умолчанию.

если вы используете Экспресс >= 4.16.0, парсер тела был повторно добавлен под методами express.json() и express.urlencoded().

хочу ноль предупреждений? Используйте его так:

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

объяснение значение по умолчанию extended опция была устаревшей, что означает, что вам нужно явно передать значение true или false.

в старых версиях express мы должны были использовать:

app.use(express.bodyparser()); 

потому что express был промежуточным По между узлом и тело-парсер. Теперь мы должны использовать его как:

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

тело-парсер является частью экспресс промежуточного слоя считывает входные данные формы и сохраняет их в виде 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

, когда extended имеет значение true, затем сдутые (сжатые) тела будут раздуты; когда extended имеет значение false, спущенные тела отклоняются.

я обнаружил, что при добавлении

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

каково Ваше мнение, чтобы использовать экспресс-генератор он будет генерировать скелет проекта для начала,without deprecated messages появился в вашем журнале

выполнить команду

npm install express-generator -g

Теперь создайте новый экспресс.приложение JS starter введите эту команду в your Node projects folder.

express node-express-app

эта команда говорит express для создания нового узла.JS приложение с именем node-express-app.

затем Go to the newly created project directory,install npm packages и start the app С помощью команды

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

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

У меня такая же проблема, но эта работа для меня. Вы можете попробовать эту расширенную часть.

Comments

    Ничего не найдено.