Nvm-windows: mklink ist unter Windows 10 nicht zuverlässig

Erstellt am 4. Mai 2017  ·  3Kommentare  ·  Quelle: coreybutler/nvm-windows

Meine Umgebung

  • [ ] Windows 7 oder niedriger (wegen EOL nicht wirklich unterstützt - siehe Wiki für Details)
  • [ ] Windows 8
  • [ ] Windows 8.1
  • [X] 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

nvm use <version> sollte einen Symlink unter C:\Program Files\nodejs oder an dem Wert erstellen, der im

Tatsächliches Verhalten

Der Symlink wird nicht immer erstellt, auch wenn ich nvm use von einer erhöhten Shell aus ausführe.

Schritte zum Reproduzieren des Problems:

nvm install 6.9.1
nvm use 6.9.1

Ich werde vom elevate.cmd-Skript aufgefordert, ich antworte mit Ja, der Symlink wird nicht erstellt

Ich weiß nicht, ob es damit zusammenhängt, aber ich führe nvm use von Powershell aus.
Es ist auch irgendwie zufällig, bei einigen Windows 10 habe ich das Problem, bei anderen nicht.
Ich glaube, eine gute Problemumgehung wäre, zu testen, ob ein Symlink erstellt wird, nachdem cmd.exe mklink ausgeführt wurde. Wenn kein Symlink vorhanden ist, führen Sie den Powershell-Befehl new-item aus, um den Link zu erstellen

Alle 3 Kommentare

Sehen Sie den Symlink nicht, nachdem Sie nvm use ? Haben Sie versucht, den Befehl in einer Standard-Shell anstelle von Powershell auszuführen?

1. Bitte löschen Sie den Installationsknoten mit dem Windows10-Deinstallationsprogramm

2.nvm installieren

3. Änderungsfenster Umgebungsvariablen ( Referenz )

Chinesische Auslegung:
1. Um nvm auf window10 zu installieren, löschen Sie zuerst den Knoten, der auf dem Computer selbst installiert wurde, da nvm das auf window10 installierte nvm nicht verwalten kann (gemeldeter Fehler beim Ändern der Registrierung)
2. Verwenden Sie nach der Installation von nvm nvm selbst, um den Knoten zu installieren
3. Ändern Sie NODE_PATH in C:\Program Files\nodejs, da nvm eine weiche Verbindung in "C:\Program Files\nodejs" erstellt und eine Verbindung zu "nvm root" herstellt (nvm root zeigt auf das eigentliche Verzeichnis von node).

@coreybutler : Nein, ich sehe den Symlink nicht, nachdem ich nvm use ausgeführt habe.

Haben Sie versucht, den Befehl in einer Standard-Shell anstelle von Powershell auszuführen?

=> Der springende Punkt ist, es von Powershell aus auszuführen. Tatsächlich führe ich ein Skript aus, das viele Abhängigkeiten installiert und die VM konfiguriere. Hier ist eine Teilmenge des Skripts

$wc = New-Object System.Net.WebClient

# configure repositories
Set-PSRepository -Name PSGallery -InstallationPolicy Trusted

Get-Packageprovider -Name chocolatey
Set-PackageSource -Name Chocolatey -Trusted

Install-Package 7zip.install -ProviderName Chocolatey -RequiredVersion 16.02.0.20160811
$env:PATH+=";C:\Program Files\7-Zip"

$source = "https://github.com/coreybutler/nvm-windows/releases/download/1.1.3/nvm-setup.zip"
$archive = Join-Path $env:TEMP ($source.substring($source.lastindexOf('/') + 1))

$wc.DownloadFile($source, $archive)

echo "downloaded at: $archive"

7z x -aoa -y $archive "-o$env:TEMP"

#$uninstallScript = (Join-Path $PSScriptRoot uninstall_cmdline.ps1)
#&$uninstallScript -software "NVM for Windows*" | Out-Null

$nvmSetup = Join-Path $env:TEMP "nvm-setup.exe"
Start-Process $nvmSetup -ArgumentList @("/SILENT", "/SP-", "/SUPPRESSMSGBOXES") -Wait
ri $archive
ri $nvmSetup

$localNvmPath = Join-Path $env:APPDATA "nvm"
$defaultNodejsPath = "C:\Program Files\nodejs"
#Add-Path $localNvmPath
#Add-Env NVM_HOME $localNvmPath
ri $defaultNodejsPath -ErrorAction SilentlyContinue -Recurse -Force
nvm root $env:NVM_HOME
nvm install 4.5.0
nvm use 4.5.0
#create manually symlink if problem with nvm use, see https://github.com/coreybutler/nvm-windows/issues/266
#$nodePath = Join-Path $localNvmPath "v4.5.0"
#if ((-Not (Test-Path $nodePath) -or (-Not (Test-Path $defaultNodejsPath))))
#{
#    Start-Process powershell -Verb runAs -ArgumentList "-WindowStyle Hidden", "-Command `"&{ New-Item -Path `'$defaultNodejsPath`' -Value `'$nodePath`' -ItemType SymbolicLink }`"" -Wait -WindowStyle Hidden
#}

Sie sollten dieses Skript in eine ps1-Datei einfügen und so ausführen können, wie es ist. Ich habe Add-Env- und Add-Path-Funktionen kommentiert, die dem env bzw. dem Ordnerspeicherort dem PATH Variablen hinzufügen. Ich habe auch einen Deinstallationsskriptaufruf kommentiert, der im Grunde genommen nvm deinstalliert, falls zuvor einer installiert wurde. Ich habe auch die gefundene Problemumgehung kommentiert: Erstellen Sie den Symlink manuell.

@youzaiyouzai666 : Ich

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen