BodyParser - устаревший экспресс 4

Я использую express 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);

Ответ 1

Это означает, что использование конструктора bodyParser() было устарело, начиная с 2014-06-19.

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().

Ответ 2

Хотите нулевые предупреждения? Используйте его так:

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

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

Ответ 3

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

app.use(express.bodyparser()); 

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

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

Ответ 4

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

Ответ 5

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

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

помогает, иногда это вопрос вашего запроса, который определяет, как выражение обрабатывает его.

Например, может быть, что ваши параметры передаются в URL, а не в теле

В таком случае вам нужно зафиксировать как параметры body, так и url и использовать то, что доступно (с предпочтением для параметров тела в приведенном ниже примере)

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

Ответ 6

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

запустите эту команду

npm install express-generator -g

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

express node-express-app

Эта команда сообщает express для создания нового приложения Node.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

Ответ 7

позвольте мне пояснить, почему мы используем парсер для тела?

Средство разбора тела Node.js.

Разбирайте входящие запросы в промежуточном программном обеспечении перед вашими обработчиками, доступными под свойством req.body.

Примечание. Поскольку форма req.body основана на управляемом пользователем входе, все свойства и значения в этом объекте недоверены и должны быть проверены перед доверием. Например, req.body.foo.toString() может терпеть неудачу несколькими способами, например, свойство foo может быть не там или не может быть строкой, а toString может не быть функцией, а вместо этого строкой или другим пользователем.

Установка (локализация в папку проекта)

npm install body-parser OR npm я body-parser

Теперь добавьте это в свой основной файл или файл js, который вы определили в package.json

var express = require('express')
var bodyParser = require('body-parser')

var app = express()

   // parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))

// parse application/json
app.use(bodyParser.json())

Для получения дополнительных разъяснений перейдите по ссылке https://www.npmjs.com/package/body-parser

Ответ 8

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

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