Nvm-windows: mklink ненадежен в Windows 10

Созданный на 4 мая 2017  ·  3Комментарии  ·  Источник: coreybutler/nvm-windows

Моя среда

  • [] Windows 7 или более ранняя версия (на самом деле не поддерживается из-за EOL - подробности см. В вики)
  • [ ] Windows 8
  • [] Windows 8.1
  • [X] Windows 10
  • [] Windows 10 IoT Core
  • [] Windows Server 2012
  • [] Windows Server 2012 R2
  • [] Windows Server 2016

  • [] Моя установка Windows не на английском языке.

Я уже...

  • [X] прочтите README, чтобы узнать о проблемах с npm и антивирусах.
  • [X] просмотрел вики, чтобы убедиться, что моя проблема еще не решена.
  • [X] проверено, я использую учетную запись с правами администратора.
  • [X] проверил проблемы (открытые и закрытые), чтобы убедиться, что это не дубликаты.
  • [X] убедился, что это не вопрос о том, как использовать NVM для Windows, поскольку gitter используется для вопросов и комментариев.

Моя проблема связана с (отметьте только те, которые применимы):

  • [] settings.txt
  • [] поддержка прокси
  • [] Поддержка 32 или 64 бит

Ожидаемое поведение

nvm use <version> должен создать символическую ссылку в C: \ Program Files \ nodejs или в значении,

Фактическое поведение

Символическая ссылка не всегда создается, даже если я запускаю nvm use из оболочки с повышенными правами.

Шаги по воспроизведению проблемы:

nvm install 6.9.1
nvm use 6.9.1

Мне подсказывает скрипт elevate.cmd, отвечаю да, символическая ссылка не создается

Я не знаю, связано ли это, но я запускаю nvm use из PowerShell.
Также это вроде случайно, на некоторых окнах 10 у меня проблема, на других - нет.
Я считаю, что хорошим обходным решением было бы проверить, создается ли символическая ссылка после запуска cmd.exe mklink. Если символическая ссылка отсутствует, запустите команду powershell new-item, чтобы создать ссылку.

Все 3 Комментарий

Разве вы не видите символическую ссылку после запуска nvm use ? Вы пробовали запускать команду в стандартной оболочке вместо Powershell?

1. Удалите установочный узел программой удаления window10.

2. установка nvm

3. модификация Окно переменных среды ( справка )

Китайская интерпретация:
1. Чтобы установить nvm на window10, сначала удалите узел, который был установлен на самом компьютере, потому что nvm не может управлять nvm, установленным на window10 (сообщается об ошибке изменения реестра)
2. После установки nvm используйте сам nvm для установки узла.
3. Измените NODE_PATH на C: \ Program Files \ nodejs; потому что nvm создает мягкое соединение в "C: \ Program Files \ nodejs" и подключается к "nvm root" (nvm root указывает на фактический каталог узла)

@coreybutler : Нет, я не вижу символическую ссылку после запуска nvm use.

Вы пробовали запускать команду в стандартной оболочке вместо Powershell?

=> Все дело в том, чтобы запустить его из PowerShell. Действительно, я запускаю сценарий, который устанавливает множество зависимостей и настраивает виртуальную машину. Вот подмножество скрипта

$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
#}

Вы должны иметь возможность поместить этот сценарий в файл ps1 и выполнить его как есть. Я прокомментировал функции Add-Env и Add-Path, которые соответственно добавляют переменные в env и местоположение папки в PATH. Я также прокомментировал вызов сценария удаления, который в основном удаляет nvm, если он был установлен ранее. Я также прокомментировал найденный мной обходной путь: создать символическую ссылку вручную.

@ youzaiyouzai666 : Я

Была ли эта страница полезной?
0 / 5 - 0 рейтинги