Як позбутися попередження про застарілість Connect 3.0?


74

Я розробник node.js, який створює веб-програми за допомогою express.js. Наразі моя проблема:

Кожного разу, коли я створюю програму на своєму комп’ютері, npm встановлює її і запускаю (разом із node 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

Додаток працює, це добре. Але коли я клоную програму, створену на іншому комп’ютері, я не отримую цього повідомлення, тому я припускаю, що у мене на комп’ютері є щось застаріле.

Я зайшов на згаданий у повідомленні веб-сайт і підтвердив свої припущення. Це попередження про непридатність. Однак я оновив node та npm та глобально виражаю, але я все ще отримую примітку.

Отже, моя проблема полягає в тому, що я не знаю, що мені потрібно оновити, щоб позбутися приміток про знежирення, бо вони мене збентежують.

Сподіваюся, хтось може мені допомогти. Дуже дякую.


Ви пробували користуватися іншими бібліотеками безпосередньо? Такі як багатопартійність (який експрес використовує за лаштунками?) - є хороший список за адресою andrewkelley.me/post/do-not-use-bodyparser-with-express-js.html внизу публікації.
guy mograbi

Відповіді:


170

Це попередження, яке зникне після оновлення 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
детальніше про випуск connect 3.0 тут: groups.google.com/d/msg/express-js/iP2VyhkypHo/5AXQiYN3RPcJ
fernandopasik

16
Мені також потрібно було додати, app.use(express.multipart())оскільки мої багаточастинні форми перестали працювати (звичайно), що також повернуло попередження про припинення використання (звичайно).
платний ботанік

5
скористайтеся одним із багаточастинних аналізаторів, перелічених у вікі. не використовуй connect / express '
Джонатан Онг,

1
СПАСИБІ! ТИ! Я збирався зійти з розуму
Маркус Гаммарберг

60

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

крок 1: використовуйте кожен парсер безпосередньо замість app.use(express.bodyParser());

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

крок 2: використовуйте інший синтаксичний синтаксичний аналізатор, наприклад: можна використовувати connect-multiparty

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

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


1
Це не попередження про знецінення - це суттєві зміни. app.use (express.bodyParser) більше не працює з останньою версією, але основні номери версій не змінилися для libs, що порушує концепцію semver.
tkone

запустивши останню версію 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())призводить до того, що програма повертає "добре" із статусом HTTP 200.
tkone

Це connect-multiparty, замість connect-multipart
Вінс Юань

1
Я хотів би, щоб була можливість придушити це попередження; хоча сповіщення про моральне припинення є важливими, в корпоративному середовищі дуже рідко НЕ існує можливості їх придушити. У моїй поточній ситуації я не можу внести необхідні зміни, щоб уникнути повідомлення щонайменше 6 місяців, але варіант конфігурації я міг би, але тепер ми розсипали їх по всіх журналах у іншому форматі, ніж будь-що інше, що робить наші старші парсери журналу не дуже задоволеними . Просто їжа для роздумів; Повідомлення про застарілість є важливими, але розробникам потрібен спосіб їх усунути, якщо це необхідно.
Kris

1
@Kris, якщо ви не можете використовувати json та urlencoded проміжне програмне забезпечення безпосередньо (імовірно, оскільки ви використовуєте багаточастинну підтримку для обробки завантажень файлів), ви можете на мить замінити, console.logпоки інстанціюється bodyParser, а потім повернути його назад. Я використовував цей підхід протягом певного періоду в Sails для нормалізації нашого журналу
mikermcneil

1

оскільки express - це просто обгортка для підключення, я пропоную використовувати connect безпосередньо.

так замість: app.use(express.bodyParser());

використання:

connect = require('connect');
app.use(connect.json());
app.use(connect.urlencoded());
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.