diff --git a/03_js-dom/docs/nvm-globale-module.html b/03_js-dom/docs/nvm-globale-module.html new file mode 100644 index 0000000..a7e4d91 --- /dev/null +++ b/03_js-dom/docs/nvm-globale-module.html @@ -0,0 +1,10157 @@ + + + + + Velinkungsproblem von globalen Modulen + + + + + + + + + + + + + + + +
+
+ +

Velinkungsproblem von globalen Modulen

+

Bei nvm-windows liegt das Problem an einem bekannten Mechanismus:

+

nvm-windows verwaltet Node-Versionen über einen Symlink (standardmäßig C:\Program Files\nodejs). Dieser Symlink zeigt dynamisch auf die gerade aktive Node-Version unter %APPDATA%\nvm\v<version>.

+

Wenn du npm install -g <package> ausführst, gibt es zwei typische Szenarien, warum das Binary nicht mehr im PATH landet:

+
    +
  1. Ein abweichendes oder altes globales prefix in der .npmrc: Wenn dort noch ein hartkodierter Pfad (wie %APPDATA%\npm) hinterlegt ist, legt npm die .cmd-Dateien dort ab, aber nvm-windows bindet diesen Pfad nicht in den PATH ein – nvm erwartet globale Pakete direkt im Symlink-Verzeichnis der jeweiligen Node-Version.
  2. +
  3. Fehlende Berechtigungen im Node-Symlink: Liegt Node unter C:\Program Files\nodejs, kann npm ohne Admin-Rechte dort keine .cmd-Dateien anlegen und weicht stillschweigend aus.
  4. +
+
+

Schritt 1: Prüfen, wo npm globale Pakete aktuell ablegt

+

Führe in der PowerShell aus:

+
npm config get prefix
+
+
+ +
+

Lösungsweg 1: Den dedizierten npm-Ordner nutzen (Empfohlen & Best Practice)

+

Damit globale Pakete auch bei einem Node-Versionswechsel über nvm use erhalten bleiben und keine Admin-Rechte im Programmverzeichnis nötig sind, bindet man den globalen npm-Pfad fest ein.

+
    +
  1. Globales Prefix in npm festlegen:
  2. +
+
npm config set prefix "$env:APPDATA\npm"
+
+
+
    +
  1. Diesen Ordner dauerhaft in den Benutzer-PATH eintragen:
  2. +
+
[Environment]::SetEnvironmentVariable(
+    "Path",
+    [Environment]::GetEnvironmentVariable("Path", "User") + ";$env:APPDATA\npm",
+    "User"
+)
+
+
+
    +
  1. Paket nochmals global installieren:
  2. +
+
npm install -g gulp-cli
+
+
+
    +
  1. Terminal neu starten (Windows Terminal / PowerShell schließen und neu öffnen), danach testen:
  2. +
+
gulp -v
+
+
+
+

Lösungsweg 2: Den nvm-Standard wiederherstellen

+

Falls du möchtest, dass nvm-windows globale Pakete strikt pro Node-Version im jeweiligen Versionsordner verwaltet:

+
    +
  1. Globales Prefix zurücksetzen:
  2. +
+
npm config delete prefix
+
+
+
    +
  1. Prüfen, ob der nvm-Symlink im PATH vorhanden ist:
  2. +
+
$env:PATH -split ';' | Select-String "nodejs"
+
+
+

Hier muss der nvm-Symlink (C:\Program Files\nodejs oder dein benutzerdefinierter Pfad) auftauchen. +3. Installieren:

+
npm install -g gulp-cli
+
+
+

(Hinweis: Falls eine Fehlermeldung bezüglich EPERM oder fehlender Schreibrechte auftaucht, die Konsole einmalig als Administrator ausführen oder Lösungsweg 1 wählen).

+
+
+ + + + + + \ No newline at end of file diff --git a/03_js-dom/docs/nvm-globale-module.md b/03_js-dom/docs/nvm-globale-module.md new file mode 100644 index 0000000..b9d5346 --- /dev/null +++ b/03_js-dom/docs/nvm-globale-module.md @@ -0,0 +1,91 @@ +# Velinkungsproblem von globalen Modulen + +Bei **nvm-windows** liegt das Problem an einem bekannten Mechanismus: + +`nvm-windows` verwaltet Node-Versionen über einen **Symlink** (standardmäßig `C:\Program Files\nodejs`). Dieser Symlink zeigt dynamisch auf die gerade aktive Node-Version unter `%APPDATA%\nvm\v`. + +Wenn du `npm install -g ` ausführst, gibt es zwei typische Szenarien, warum das Binary nicht mehr im `PATH` landet: + +1. **Ein abweichendes oder altes globales `prefix` in der `.npmrc`:** Wenn dort noch ein hartkodierter Pfad (wie `%APPDATA%\npm`) hinterlegt ist, legt npm die `.cmd`-Dateien dort ab, aber nvm-windows bindet diesen Pfad **nicht** in den `PATH` ein – nvm erwartet globale Pakete direkt im Symlink-Verzeichnis der jeweiligen Node-Version. +2. **Fehlende Berechtigungen im Node-Symlink:** Liegt Node unter `C:\Program Files\nodejs`, kann npm ohne Admin-Rechte dort keine `.cmd`-Dateien anlegen und weicht stillschweigend aus. + +--- + +### Schritt 1: Prüfen, wo npm globale Pakete aktuell ablegt + +Führe in der PowerShell aus: + +```powershell +npm config get prefix + +``` + +* **Fall A (Standard bei nvm-windows):** Der Pfad zeigt auf das aktive Symlink-Verzeichnis (z. B. `C:\Program Files\nodejs`). Hier müssten die `.cmd`-Dateien liegen. +* **Fall B (Häufige Ursache):** Der Pfad zeigt auf `C:\Users\\AppData\Roaming\npm`. In diesem Fall findet Windows die Befehle nicht, weil dieser Ordner bei nvm-windows **nicht** im `PATH` steht. + +--- + +### Lösungsweg 1: Den dedizierten npm-Ordner nutzen (Empfohlen & Best Practice) + +Damit globale Pakete auch bei einem Node-Versionswechsel über `nvm use` erhalten bleiben und keine Admin-Rechte im Programmverzeichnis nötig sind, bindet man den globalen npm-Pfad fest ein. + +1. **Globales Prefix in npm festlegen:** +```powershell +npm config set prefix "$env:APPDATA\npm" + +``` + + +2. **Diesen Ordner dauerhaft in den Benutzer-`PATH` eintragen:** +```powershell +[Environment]::SetEnvironmentVariable( + "Path", + [Environment]::GetEnvironmentVariable("Path", "User") + ";$env:APPDATA\npm", + "User" +) + +``` + + +3. **Paket nochmals global installieren:** +```powershell +npm install -g gulp-cli + +``` + + +4. **Terminal neu starten** (Windows Terminal / PowerShell schließen und neu öffnen), danach testen: +```powershell +gulp -v + +``` + +--- + +### Lösungsweg 2: Den nvm-Standard wiederherstellen + +Falls du möchtest, dass nvm-windows globale Pakete strikt pro Node-Version im jeweiligen Versionsordner verwaltet: + +1. **Globales Prefix zurücksetzen:** +```powershell +npm config delete prefix + +``` + + +2. **Prüfen, ob der nvm-Symlink im `PATH` vorhanden ist:** +```powershell +$env:PATH -split ';' | Select-String "nodejs" + +``` + + +Hier muss der nvm-Symlink (`C:\Program Files\nodejs` oder dein benutzerdefinierter Pfad) auftauchen. +3. **Installieren:** +```powershell +npm install -g gulp-cli + +``` + + +*(Hinweis: Falls eine Fehlermeldung bezüglich `EPERM` oder fehlender Schreibrechte auftaucht, die Konsole einmalig als Administrator ausführen oder Lösungsweg 1 wählen).* \ No newline at end of file diff --git a/03_js-dom/docs/nvm-globale-module.pdf b/03_js-dom/docs/nvm-globale-module.pdf new file mode 100644 index 0000000..99403aa Binary files /dev/null and b/03_js-dom/docs/nvm-globale-module.pdf differ