bodyParser устарел Экспресс 4
Я использую express 4.0, и я знаю, что анализатор тела был извлечен из ядра express, я использую рекомендуемую замену, однако я получаю
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);
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 теперь должен быть явно передан, так как теперь он не имеет значения по умолчанию.
если вы используете Express >= 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 был промежуточным По между узлом и body-parser. Теперь мы должны использовать его как:
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
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, сдутые тела отклоняются.
Я нашел это при добавлении
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}));
У меня такая же проблема, но эта работа для меня. Вы можете попробовать эту расширенную часть.