Wie installiere ich eine frühere exakte Version eines NPM-Pakets?


916

Ich habe nvm zum Herunterladen von Node v0.4.10 verwendet und npm installiert, um mit dieser Version von Node zu arbeiten.

Ich versuche Express mit zu installieren

npm install express -g

und ich erhalte einen Fehler, für den express eine Knotenversion> = 0.5.0 erfordert.

Nun, das ist seltsam, da ich folgende bin den Anweisungen für einen Knoten + express + mongodb Tutorial hier , dass benutzte Knoten v0.4.10, so gehe ich davon aus express ist / zu Knoten v0.4.10 zur Verfügung stand. Wenn meine Annahme richtig ist, wie kann ich npm anweisen, eine Version abzurufen, die mit meinem Setup funktioniert?


7
Warum aktualisieren Sie nicht einfach Ihre Node-Version? Ich bin mir ziemlich sicher, dass es viel mehr gute Ergänzungen als gebrochenes Verhalten geben sollte, die Sie finden werden.
Fabrício Matté

1
Manchmal ist das keine Option. Wenn er zum Downgrade nvm verwendet hat, kann es einen Grund geben, z. B. dass eine andere Gruppe die Version des ausführbaren Knotens steuert, die er verwenden muss.
narr4jesus

Antworten:


1583

Wenn Sie eine ältere Version eines Pakets installieren müssen, geben Sie diese einfach an

npm install <package>@<version>

Zum Beispiel: npm install express@3.0.0

Sie können auch die hinzufügen --save diesem Befehl Flag hinzufügen, um es zu Ihren package.json-Abhängigkeiten hinzuzufügen, oder --save --save-exactFlags, wenn Sie möchten, dass genau diese Version in Ihren package.json-Abhängigkeiten angegeben wird.

Der installBefehl ist hier dokumentiert: https://docs.npmjs.com/cli/install

Wenn Sie nicht sicher sind, welche Versionen eines Pakets verfügbar sind, können Sie Folgendes verwenden:

npm view <package> versions

Und npm viewkann auch zum Anzeigen anderer Dinge über ein Paket verwendet werden. https://docs.npmjs.com/cli/view


4
Ich glaube, dies wird die nächste Hauptversion installieren, die übereinstimmt, so dass es möglicherweise nicht das ist, was Sie erwarten. Stackoverflow.com/a/22345808/1074400
Aakil Fernandes

2
@AakilFernandes Wenn Sie eine genaue Version angeben, wird eine genaue Version installiert. Wenn Sie einen semantischen Versionsbereich angeben, erhalten Sie möglicherweise eine nicht exakte Übereinstimmung. Der Befehl install ist in dieser Hinsicht nicht eindeutig.
Bret Copeland

6
npm view <package> versions -jsonUm jede einzelne Version zu sehen, vermeiden Sie die Auslassungspunkte am Ende einer Liste mit vielen Versionen.
TheDarkIn1978

5
Wenn Sie verwenden npm install express@3.0.0, erhalten Sie nicht die genaue Version 3.0.0, sondern die neueste Version 3.xx. Um die spezifische Version zu erhalten, müssen Sie verwenden npm install express@3.0.0 --save-exact. Siehe diesen Blog-Beitrag: 60devs.com/npm-install-specific-version.html
Patrick Hund

5
@PatrickHund nein, npm install express@3.0.0Sie erhalten genau Version 3.0.0. npm install express@^3.0.0Ich würde Ihnen die neuesten 3.xx-Effekte geben, --save-exactwie sie in packages.json geschrieben werden, was ich bereits in meiner Antwort behandelt habe. Beachten Sie auch, --save-exactmuss in Kombination mit entweder --saveoder verwendet werden --save-dev- es reicht nicht aus, es alleine zu verwenden.
Bret Copeland

93

Es ist sehr leicht. Schreiben Sie dies einfach zum Beispiel:

npm install -g npm@4.6.1

Oder:

npm install -g npm@latest    // For the last stable version
npm install -g npm@next      // For the most recent release

1
Danke für die latestund nextVersions-Tags!
Jimmy Adaro

@inaps Sie können einen Hinweis hinzufügen, dass das -gFlag speziell für Pakete gilt, die global installiert werden sollen, da viele Benutzer diese Seite aufrufen und lediglich kopieren / einfügen, ohne zu wissen, wie sie sich auf ihr Paket-Ökosystem auswirken werden. Wir waren alle "dieser Typ"
Jacksonkr

73

Entfernen Sie zuerst die alte Version und führen Sie dann buchstäblich Folgendes aus:

npm install express@3.X

und für stabile oder aktuelle

npm install -g npm@latest    // For the last stable version
npm install -g npm@next      // For the most recent release

12
Ist das ein Literal Xoder ein Ersatz für eine numerische Versionsnummer?
Keith Thompson

7
Das war eine Entweder-Oder-Frage, keine Ja / Nein-Frage. Ich versuchte es npm install express@3.Xund es schien zu funktionieren. Ist das eine Funktion oder ein Unfall, bei dem npmdie Versionsnummer analysiert wird?
Keith Thompson

3
@ KeithThompson Ja, das ist es! Hehe, nur ein Scherz ... So wird es npmanalysiert, siehe: docs.npmjs.com/misc/semver#x-ranges-12x-1x-12-
gonz

3
@gonz: Es ist also ein Literal X.
Keith Thompson

1
Ich wollte nur ansprechen, warum das für Sie funktioniert hat. Ich kenne Saurabhs ursprüngliche Absicht nicht oder was Sie versuchen zu tun. 3.X würde> = 3.0 und <4.0 bedeuten.
Gonz

41

Meiner Meinung nach ist das der einfachste und schnellste Weg:

$ npm -v

4.2.0

$ npm install -g npm@latest-3

...

$ npm -v

3.10.10


2

Sie können Ihr npm-Paket mit diesem Befehl aktualisieren:

npm install <package_name>@<version_number>

Beispiel: npm install yargs@12.02


1

Ich habe eine allgemeine Möglichkeit, diese Art von Problemen zu lösen, was ebenfalls hilfreich sein kann, insbesondere beim Klonen von Repositorys, um sie lokal auszuführen, erfordert jedoch eine etwas genauere Analyse der Versionen.

Mit dem Paket npm-check-updatesüberprüfe ich die Versionen der Pakete (gemäß der Datei package.json), die nicht in den neuesten verfügbaren Versionen deklariert sind, wie in der Abbildung ( https://www.npmjs.com/package/npm-check) gezeigt -Updates ):

Geben Sie hier die Bildbeschreibung ein

Mit diesen Informationen können wir den Aktualisierungsstatus der verschiedenen Pakete überprüfen und entscheiden, welche Pakete aktualisiert / verschlechtert werden sollen und welche nicht.

Angenommen, wir haben beschlossen, alle aufgelisteten Pakete zu aktualisieren, können wir den ncu -uBefehl verwenden, der nur Ihre Datei package.json ändert. Laufnpm install , um Ihre installierten Pakete und package-lock.json zu aktualisieren.

Abhängig von den Anforderungen des Repositorys können wir dann die Anforderungen verfeinern und die spezifischen Versionen mit npm view <package> versionsund installieren npm install <package>@<version>


1

npm install -g npm@version

in dem Sie ein Downgrade durchführen möchten

npm install -g npm@3.10.10


aber wenn ich es lokal brauche? muss ich --save setzen?
AlexNikonov

Ja, das haben Sie auch. Es wird das Paket lokal herunterladen.
Lakshay Sharma

@AlexNikonov ommit die -g(für die globale Installation, dann landet es in Ihrem aktuellen Projektverzeichnis /node_modules) und ja, --saveoder --save-devum einen Eintrag inpackage.json
Frank Nocke

0

Mit dem folgenden Befehl können Sie eine frühere Version eines npm-Pakets installieren:

npm install packagename@version


-3

Unter Ubuntu können Sie diesen Befehl ausprobieren.

sudo npm cache clean -f
sudo npm install -g n
sudo n stable 

Spezifische Version: sudo n 8.11.3 anstelle von sudo n stabil

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.