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:
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.C:\Program Files\nodejs, kann npm ohne Admin-Rechte dort keine .cmd-Dateien anlegen und weicht stillschweigend aus.Führe in der PowerShell aus:
npm config get prefix
C:\Program Files\nodejs). Hier müssten die .cmd-Dateien liegen.C:\Users\<Name>\AppData\Roaming\npm. In diesem Fall findet Windows die Befehle nicht, weil dieser Ordner bei nvm-windows nicht im PATH steht.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.
npm config set prefix "$env:APPDATA\npm"
PATH eintragen:[Environment]::SetEnvironmentVariable(
"Path",
[Environment]::GetEnvironmentVariable("Path", "User") + ";$env:APPDATA\npm",
"User"
)
npm install -g gulp-cli
gulp -v
Falls du möchtest, dass nvm-windows globale Pakete strikt pro Node-Version im jeweiligen Versionsordner verwaltet:
npm config delete prefix
PATH vorhanden ist:$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).