Nvm-windows: funktioniert nicht mit .nvmrc

Erstellt am 20. Mai 2016  ·  8Kommentare  ·  Quelle: coreybutler/nvm-windows

Meine Umgebung

  • [x] Windows 7 oder niedriger (wegen EOL nicht wirklich unterstützt)
  • [ ] Windows 8
  • [ ] Windows 8.1
  • [ ] Windows 10
  • [ ] Windows 10 IoT-Core
  • [ ] Windows Server 2012
  • [ ] Windows Server 2012 R2
  • [ ] Windows Server 2016
  • [ ] Meine Windows-Installation ist nicht englisch.

    Ich habe schon...

  • [x] Lesen Sie die README-Datei, um sich über npm-Gotchas und Antivirus-Probleme zu informieren.

  • [x] hat das Wiki überprüft, um sicherzustellen, dass mein Problem nicht bereits gelöst wurde.
  • [x] hat bestätigt, dass ich ein Konto mit Administratorrechten verwende.
  • [x] hat die Issues (offen und geschlossen) durchsucht, um sicherzustellen, dass es sich nicht um ein Duplikat handelt.
  • [x] stellte sicher, dass dies keine Frage zur Verwendung von NVM für Windows ist, da gitter für Fragen und Kommentare verwendet wird.

    Mein Problem bezieht sich auf (kreuzen Sie nur die zutreffenden an):

  • [ ] settings.txt

  • [ ] Proxy-Unterstützung
  • [ ] 32- oder 64-Bit-Unterstützung

    Erwartetes Verhalten

Gleiches Ergebnis wie nvm use 4.4.4

Tatsächliches Verhalten

Ausgabe: node v (64-bit) is not installed.

Schritte zum Reproduzieren des Problems:

eine .nvmrc Datei mit 4.4.4 als Knotenversion erstellt.
Gehen Sie zur Befehlszeile und führen Sie nvm use im selben Ordner wie die Datei aus.

duplicate wontfix

Hilfreichster Kommentar

Kleine Beule zu diesem Problem. Bin gerade drauf reingelaufen.

So schwer kann es doch nicht ernsthaft sein. Gehen Sie wie folgt vor, wenn eine Version nicht an nvm use geliefert wird:

  1. Nehmen Sie die Version von .nvmrc
  2. Ist diese Version installiert? Wenn nicht -> installieren
  3. Wird diese Version derzeit verwendet? Wenn nicht -> verwenden.
  4. Fertig

Mit anderen Worten, ohne Angabe der Versionsnummer ist nvm use eine Kombination aus nvm install < .nvmrc und nvm use < .nvmrc (Pseudo-Befehl - funktioniert momentan nicht).

Mehr ist nicht drin.

Alle 8 Kommentare

.nvmrc wurde noch nie unterstützt. Dies ist eine nvm-spezifische Funktion, nicht NVM für Windows.

@coreybutler Ich bin vom Disaster Accountability Project und wir haben einige Entwickler, die Windows verwenden und die .nvmrc . Wir beginnen, nvm-windows für unsere freiwilligen Webentwickler zu übernehmen, und ich möchte, dass Sie die Unterstützung von .nvmrc überdenken. Dies ist die Site, auf der wir .nvmrc verwenden.

@inunotaisho26 - Im .nvmrc beginnt sich mit spezifischen Umgebungsmanagementproblemen zu beschäftigen, was den Umfang des Projekts drastisch erhöht. Ich sehe im "Umweltmanagement" ein grundsätzlich anderes Problem als im "Versionsmanagement". Wir haben diese unterschiedlichen Anwendungsfälle in der Arbeitsgruppe Versionsverwaltung diskutiert.

Diese Funktion wurde zwar schon einmal angefordert, aber ich habe nicht genügend Freizeit, um sie zu unterstützen. Aufgrund der Anzahl von Leuten, die allgemeine Umgebungsmanagement-Lösungen (neben nur .nvmrc) anfordern, experimentiere ich mit Ideen für eine kommerzielle Umgebungsmanagement-App, um diese Prozesse zu rationalisieren. Der Zeitaufwand für die Unterstützung der großen Wunschliste der Community erfordert Finanzierung oder Sponsoring, daher werde ich mich wahrscheinlich auf die Infrastruktur stützen, die ich bereits für Fenix ​​aufgebaut habe . Der Haken: keine ETA.

Das heißt, siehe die Roadmap . Die "kostenlose" Lösung, die ich vorgeschlagen habe, ist ein Hook-System, ähnlich wie pre-commit , post-push usw. von git. Dies würde es Entwicklern ermöglichen, ihre eigenen Skripte zu erstellen, die für ihre eigenen einzigartigen Umgebungen förderlich sind. Denken Sie an Aktionen wie post-install , pre-use , pre-execute usw. Dies würde es Benutzern ermöglichen, ein Hook-Skript zu schreiben, das nach einer .nvmrc-Datei sucht und die Version im Handumdrehen wechselt .

@coreybutler Also im Grunde zwei verschiedene Ansätze zum Installieren mehrerer Versionen von Node, oder?

Irgendwie. Es gibt zwei verschiedene Philosophien, aber es geht mehr darum, Node zu verwenden, als es zu installieren.

Philosophie 1: Native Use (direkter Prozess)
Der Knoten selbst unterstützt .nvmrc . Es installiert nur seine eigene ausführbare Datei und npm. Es wird _verwendet_, indem node.exe direkt ausgeführt wird.

Philosophie 2: Augmented Use (Teilprozess)
.nvmrc ist eine Konvention, die vom ursprünglichen nvm-Projekt eingeführt wurde. Anstatt node.exe direkt aufzurufen, wird ein Shim verwendet. Der Shim ist dafür verantwortlich, eine Pseudoumgebung zu konfigurieren, bevor er Befehle an die ausführbare Datei des Knotens weitergibt (dh der Knoten ist ein Unterprozess des Shims). Hier wird die .nvmrc Logik verarbeitet. Der Haken, insbesondere unter Windows, ist, dass der Knoten im Kontext des Shims und nicht im Kontext des Benutzers ausgeführt wird. Dies hat eine Reihe von Auswirkungen/Herausforderungen, wie z in einigen Fällen) falsche Darstellung von Dateipfaden (dh __dirname verhält sich unerwartet) usw. Diese Probleme können umgangen werden, aber sie kommen noch hinzu, wenn man eine Unternehmensumgebung in Betracht zieht (Active Directory-Bereitstellungen, eingeschränkte Desktops, SAN-Laufwerke usw.).

Die allgemeine Versionsverwaltung erfordert ein gewisses Maß an Shimming, um zu verhindern, dass der Knoten jedes Mal deinstalliert/neu installiert wird, wenn Sie eine Version wechseln müssen (was ewig dauern würde). NVM4W entspricht dem ersten Ansatz, indem es Symlinks verwendet, um das Installationsverzeichnis_ zu verschieben, im Gegensatz zu Option 2, bei der die ausführbare Datei verschoben wird. Infolgedessen führen Sie die ausführbare Datei node.exe immer direkt aus, anstatt sie als Unterprozess auszuführen.

Kleine Beule zu diesem Problem. Bin gerade drauf reingelaufen.

So schwer kann es doch nicht ernsthaft sein. Gehen Sie wie folgt vor, wenn eine Version nicht an nvm use geliefert wird:

  1. Nehmen Sie die Version von .nvmrc
  2. Ist diese Version installiert? Wenn nicht -> installieren
  3. Wird diese Version derzeit verwendet? Wenn nicht -> verwenden.
  4. Fertig

Mit anderen Worten, ohne Angabe der Versionsnummer ist nvm use eine Kombination aus nvm install < .nvmrc und nvm use < .nvmrc (Pseudo-Befehl - funktioniert momentan nicht).

Mehr ist nicht drin.

Kleine Beule zu diesem Problem. Bin gerade drauf reingelaufen.

So schwer kann es doch nicht ernsthaft sein. Gehen Sie wie folgt vor, wenn eine Version nicht an nvm use geliefert wird:

1. Take version from .nvmrc

2. Is this version installed? If not -> install it

3. Is this version currently in use? If not -> use it.

4. Done

Mit anderen Worten, ohne Angabe der Versionsnummer ist nvm use eine Kombination aus nvm install < .nvmrc und nvm use < .nvmrc (Pseudo-Befehl - funktioniert momentan nicht).

Mehr ist nicht drin.

Ich bin froh, dass ich nicht der einzige mit diesem Problem bin...
Überlege, für die Entwicklung zurück zu Linux zu wechseln :/

@thany @jeromemeichelbeck Fühlen Sie sich frei, das Projekt zu

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen