2013-10-25 2 views
75

Я разработчик node.js, который создает веб-приложения, используя express.js. К настоящему времени, моя проблема:Как избавиться от предупреждения об отключении Connect 3.0?

Всякий раз, когда я создаю приложение на моем компьютере, НПМ установить его вещи и запустить его (с узлом app.js и nodemon) Я получаю это сообщение в консоли:

connect.multipart() will be removed in connect 3.0 
visit https://github.com/senchalabs/connect/wiki/Connect-3.0 for alternatives 
connect.limit() will be removed in connect 3.0 
Express server listening on port 3000 

Приложение работает, это нормально. Но когда я клонирую приложение, созданное на другом компьютере, я не получаю это сообщение, поэтому полагаю, что у меня что-то устарело на моем компьютере.

Я пошел на сайт, упомянутый в сообщении, и подтвердил свои предположения. Это предупреждение об устаревании. Тем не менее, я обновил узел и npm и глобально выразил, но я все еще получаю заметку.

Моя проблема заключается в следующем: я не знаю, что мне нужно обновить, чтобы избавиться от заметок, потому что они меня измучают.

Я надеюсь, что кто-то может мне помочь. Большое спасибо.

+0

Вы пытались использовать другие библиотеки напрямую? Например, многопартийность (которая выражает использование за кулисами?) - есть хороший список на странице http://andrewkelley.me/post/do-not-use-bodyparser-with-express-js.html внизу сообщения , –

ответ

171

Это предупреждение, которое будет уходить после того, как Express Express будет использовать Connect 3.0 - как временное исправление, следуйте инструкциям в верхней части https://github.com/senchalabs/connect/wiki/Connect-3.0. В частности, найти эту строку в вашем приложении:

app.use(express.bodyParser()); 

И заменить его следующим образом (это то, что bodyParser будет в 3.0):

app.use(express.json()); 
app.use(express.urlencoded()); 
+1

Дополнительная информация о проблеме подключения 3.0: https://groups.google.com/d/msg/express-js/iP2VyhkypHo/5AXQiYN3RPcJ – fernandopasik

+16

Мне также нужно добавить 'app.use (express.multipart())', потому что мои многопрофильные формы перестали работать (конечно), что также привело к предупреждению об утомлении (конечно). –

+3

что касается предела()? – holms

59

я несу ответственность за это устаревания уведомления. Вы читали wiki? https://github.com/senchalabs/connect/wiki/Connect-3.0

шаг 1: использовать каждый анализатор непосредственно вместо app.use(express.bodyParser());

app.use(express.json()); 
app.use(express.urlencoded()); 

шага 2: используйте другой многослойный анализатор, для например: подключения-многопартийность может быть использована

app.use(require('connect-multiparty')()) 

работы по подключению 3, а выражение 4 еще не началось, потому что узел 0.12 занимает некоторое время, которое должно быть выпущено. пока нечего обновлять.

+1

Это не уведомление об устаревании - это потрясающее изменение. app.use (express.bodyParser) больше не работает с последней версией, но основные номера версий не изменились для libs, что нарушает концепцию semver. – tkone

+0

ничего не изменилось, кроме добавления предупреждающего сообщения –

+0

, которое запускает последнюю версию с 'npm install express', и делает очень просто:' var express = require ('express'), app = express(); app.use (express.bodyParser); app.get ('/', function (req, res) {res.send (200, 'ok');}); app.listen (3000); '. Выполнение запроса на 'http: // localhost: 3000 /' зависает зависанием и браузером и печатьми. Удаление 'app.use (express.bodyParser)' или переключение на 'app.use (express.json()) заставляет приложение возвращать« ok »с HTTP Status 200. – tkone

1

так как экспресс - это просто оболочка для подключения, я предлагаю напрямую подключиться.

так вместо: app.use(express.bodyParser());

использование:

connect = require('connect'); 
app.use(connect.json()); 
app.use(connect.urlencoded()); 
Смежные вопросы