Wie entferne ich den Connect 3.0-Verfallsalarm?


74

Ich bin ein Entwickler von node.js, der Web-Apps mit express.js erstellt. Inzwischen ist mein Problem:

Immer wenn ich eine App auf meinem Computer erstelle, installiere npm ihre Inhalte und führe sie aus (mit den Knoten app.js und nodemon). Ich erhalte die folgende Meldung in der Konsole:

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

Die App funktioniert, das ist in Ordnung. Wenn ich jedoch eine App klone, die auf einem anderen Computer erstellt wurde, wird diese Meldung nicht angezeigt. Ich gehe also davon aus, dass auf meinem Computer etwas veraltet ist.

Ich ging zu der in der Nachricht genannten Seite und bestätigte meine Spekulationen. Das ist eine Abwertungswarnung. Ich habe jedoch Node und Npm aktualisiert und global ausgedrückt, aber ich erhalte immer noch die Notiz.

Mein Problem ist daher: Ich weiß nicht, was ich aktualisieren muss, um die Verfallsnotizen loszuwerden, weil sie mich ausflippen.

Ich hoffe jemand kann mir helfen. Danke vielmals.


Haben Sie versucht, andere Bibliotheken direkt zu verwenden? Zum Beispiel Multiparty (welche Express-Verwendung hinter den Kulissen?) - eine gute Liste finden Sie unter andrewkelley.me/post/do-not-use-bodyparser-with-express-js.html am Ende des Beitrags.
Kerl Mograbi

Antworten:


170

Dies ist eine Warnung, die verschwindet, sobald Express-Updates zur Verwendung von Connect 3.0 durchgeführt werden. Befolgen Sie als vorübergehende Korrektur die Anweisungen oben unter https://github.com/senchalabs/connect/wiki/Connect-3.0 . Suchen Sie diese Zeile in Ihrer App:

app.use(express.bodyParser());

Und ersetzen Sie es durch Folgendes (dies bodyParserwird in 3.0 sein):

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

1
Weitere Informationen zum Connect 3.0-Problem finden Sie hier: groups.google.com/d/msg/express-js/iP2VyhkypHo/5AXQiYN3RPcJ
fernandopasik

16
Ich musste auch hinzufügen, app.use(express.multipart())weil meine mehrteiligen Formulare (natürlich) nicht mehr funktionierten, was (natürlich) auch die Abwertungswarnung zurückbrachte.
Ein bezahlter Nerd

5
Verwenden Sie einen der im Wiki aufgeführten mehrteiligen Parser. benutze nicht connect / express '
Jonathan Ong

1
DANKEN! SIE! Ich wollte verrückt werden
Marcus Hammarberg

60

Ich bin für diesen Verfallsbescheid verantwortlich. Hast du das Wiki gelesen? https://github.com/senchalabs/connect/wiki/Connect-3.0

Schritt 1: Verwenden Sie jeden Parser direkt anstelle von app.use(express.bodyParser());

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

Schritt 2: Verwenden Sie einen anderen mehrteiligen Parser, zum Beispiel: connect-multiparty kann verwendet werden

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

Die Arbeit an Connect 3 und Express 4 hat noch nicht begonnen, da es eine Weile dauert, bis Knoten 0.12 freigegeben wird. Es gibt noch nichts zu aktualisieren.


1
Es ist kein Verfallsbescheid - es ist eine bahnbrechende Veränderung. app.use (express.bodyParser) funktioniert nicht mehr mit der neuesten Version, aber die Hauptversionsnummern für die Bibliotheken haben sich nicht geändert, was das Konzept von semver verletzt.
Tkone

Ausführen der neuesten Version von npm install expressund sehr einfach : var express = require('express'), app = express(); app.use(express.bodyParser); app.get('/', function(req,res){ res.send(200, 'ok');}); app.listen(3000);. Eine Anfrage zum http://localhost:3000/Aufhängen von Curl & Browser & druckt Warnung. Das Entfernen app.use(express.bodyParser)oder Umschalten auf app.use(express.json())bewirkt , dass die App mit dem HTTP-Status 200 "ok"
zurückgibt

Es ist Connect-Multiparty, anstatt Connect-Multiparty
Vince Yuan

1
Ich wünschte, es gäbe eine Option, um diese Warnung zu unterdrücken. Obwohl Verfallsbenachrichtigungen wichtig sind, ist es in der Unternehmensumgebung sehr selten, dass KEINE Option zum Unterdrücken vorhanden ist. In meiner aktuellen Situation kann ich nicht die erforderlichen Änderungen vornehmen, um die Nachricht für mindestens 6 Monate zu vermeiden, aber eine Konfigurationsoption, die ich könnte, aber jetzt haben wir diese in unseren Protokollen in einem anderen Format als alles andere verteilt, was unsere älteren Protokollparser nicht sehr glücklich macht . Nur Denkanstöße; Ablehnungshinweise sind wichtig, aber Entwickler benötigen einen Weg, um sie bei Bedarf aus dem Weg zu räumen.
Kris

1
@Kris Wenn Sie die json- und urlencodierte Middleware nicht direkt verwenden können (vermutlich, weil Sie die mehrteilige Unterstützung für console.logdas Hochladen von Dateien verwenden), können Sie sie vorübergehend überschreiben, während der bodyParser instanziiert wird, und sie dann zurückbringen. Ich habe diesen Ansatz für eine
gewisse

1

Da Express nur ein Wrapper zum Verbinden ist, empfehle ich die direkte Verbindung.

also statt: app.use(express.bodyParser());

verwenden:

connect = require('connect');
app.use(connect.json());
app.use(connect.urlencoded());
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.