Я использую 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}));
У меня такая же проблема, но эта работа для меня. Вы можете попробовать эту расширенную часть.