Nvm-windows: Почему не работает переключение версии узла через "nvm use"

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

Если это вопрос о том, как использовать NVM4W, используйте вместо этого stackoverflow .

Если это проблема с антивирусом, обязательно сначала найдите существующие проблемы.

Моя среда

  • [x] Windows 7 или более ранняя версия (на самом деле не поддерживается из-за EOL - подробности см. в вики)

Я использую версию NVM4W:

  • [x] 1.1.6

Я уже...

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

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

  • [] settings.txt
  • [] поддержка прокси (Вы пробовали версию 1.1.0+?)
  • [] Поддержка 32- или 64-битной версии (Вы пробовали версию 1.1.3+?)
  • [] Экранирование персонажа (Вы пробовали версию 1.1.6+?)
  • [] Стандартное окружение оболочки (терминал / PowerShell)
  • [] Нестандартное окружение оболочки (Cmder, Hyper, Cygwin, git)

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

я пытался переключить v8.9.1 на 6.12.0 (версия узла)

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

но он не переключился на 6.12.0 или другие версии.
(я наконец установил 8.9.1)

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

Я открыл cmd через администратора.

C: Windowssystem32> nvm ls

  • 8.9.1 (в настоящее время используется 64-битный исполняемый файл)
    7.1.0
    6.12.0

C: Windowssystem32> узел -v
v8.9.1

C: Windowssystem32> nvm использовать 6.12.0
Теперь использую node v6.12.0 (64-бит)

C: Windowssystem32> узел -v
v8.9.1

C: Windowssystem32> nvm ls

  • 8.9.1 (в настоящее время используется 64-битный исполняемый файл)
    7.1.0
    6.12.0

Самый полезный комментарий

Обходной путь:
"C: Program Filesnodejs" переименован в "C: Program Filesnodejsx",
Затем из расширенного cmd, называемого "nvm use 8.9.1" (любая версия, которая у вас есть, должна работать ...), и он начал работать.
Проблема, по-видимому, в том, что если каталог nodejs существует, nvm не может изменить его на символическую ссылку, и «сбой молча» будет хорошо с ошибкой и сообщением об ошибке с указанием проблемы.

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

такой же

+1

То же самое с nvm 1.1.5:

C:\windows\system32>nvm version
1.1.5

C:\windows\system32>nvm ls

    8.9.2
  * 4.7.2 (Currently using 64-bit executable)

C:\windows\system32>nvm use 8.9.2
Now using node v8.9.2 (64-bit)

C:\windows\system32>node -v
v4.7.2

C:\windows\system32>

@biologeek то же самое: /
ты нашел какое-то решение?

Чаще всего это происходит из-за использования непривилегированной учетной записи пользователя. У вашей учетной записи должны быть разрешения на уровне администратора, потому что Windows требует их для символьных ссылок. nvm use создает символическую ссылку на соответствующую установку узла. Если ваша символическая ссылка существует в C:\Program Files , вам потребуются повышенные разрешения (nvm4w попытается сделать это автоматически).

Я админ на своем компьютере. Хотя я мог бы решить эту проблему, вручную переименовав папки, чтобы символическая ссылка nvm указывала на нужную мне версию.
Быстро и грязно, но без доступа администратора!

@biologeek - вам по-прежнему нужен доступ администратора для переименования каталогов в C:\Program Files потому что это защищенный каталог в Windows (то же самое верно для C:\windows\system32 ). Лично я храню символическую ссылку NVM4W в моем пользовательском каталоге, так что это не проблема.

+1 по этому вопросу: не могу сменить версию.

Обходной путь:
"C: Program Filesnodejs" переименован в "C: Program Filesnodejsx",
Затем из расширенного cmd, называемого "nvm use 8.9.1" (любая версия, которая у вас есть, должна работать ...), и он начал работать.
Проблема, по-видимому, в том, что если каталог nodejs существует, nvm не может изменить его на символическую ссылку, и «сбой молча» будет хорошо с ошибкой и сообщением об ошибке с указанием проблемы.

Могу подтвердить то, что сказал @ituasdu . Спасибо!

@ituasdu решил мою проблему , спасибо

Привет, такая же проблема здесь.

NVM создает символическую ссылку на установленную версию узла.

Проблема в том, что Windows 7 требует прав администратора для создания символической ссылки, а в Windows 10 это уже не так.

Обходной путь - использовать переходы («жесткие» ссылки) в Windows 7 с параметром «/ J». Для соединений не требуются уровни прав администратора и учетные записи пользователей с низкими привилегиями, поскольку я могу их использовать. Пример:

nvm install 8.11.2
mklink /D /J node C:\PATH_TO_NVM\nvm\v8.11.2

Вопрос: Разве не было бы хорошей идеей использовать переходы вместо символических ссылок? Или, по крайней мере, указать параметр для nvm, например, --junctions?

Я подумываю создать для этого пул-реквест, поскольку это блокирует мою компанию. Было бы полезно?

@ nan0 делает переход на Windows 7 не работает ... он все равно не переключает версии.

C:\Program Files\nodejs содержит v6.9.4 (установлен до установки NVM4W).

C:\Users\[user]\AppData\Roaming\nvm содержит v6.9.4\ и v8.11.3\

Я выполнил команду, которую вы указали в своем сообщении:

Выпуск 1:
mklink /D /J node C:\Users\[user]\AppData\Roaming\nvm\v8.11.3 когда я пытаюсь сделать это для v6.9.4, он говорит: «Невозможно создать файл, если этот файл уже существует».

Выпуск 2:
Кроме того, использование nvm use v8.11.3 затем nvm list не означает, что на самом деле используется версия установленного узла nvm.

Что еще можно сделать?
Как я могу увидеть созданные стыки? Где они на самом деле существуют?

Я использую:
Windows 7. Нет прав администратора для моего пользователя.

неважно, это действительно работает. Я понял, что делаю junction в той папке.

переименование C: Program Filesnodejs в C: Program Files nodejsx
а затем создание соединения как "nodejs" и указание его на C:\Users\[user]\AppData\Roaming\nvm\v8.11.3 сработало!

Итак, чтобы подвести итог, решение таково:

без установленного отдельного узла.

В папке C:\Program Files\ используйте cmd для запуска mklink /D /J nodejs C:\Users\[user]\AppData\Roaming\nvm\v8.11.3

Спасибо всем, кто хочет внести свой вклад!

Тем не мение; Я хочу отметить, что соединений явно избегали, потому что они не работают на разных жестких дисках. Это было особенно болезненное место в корпоративных сетях с общими дисками / подключенными дисками.

@ituasdu Это решило мою проблему,
Спасибо за решение.

Мой компьютер работает под управлением Windows 7, и у меня есть права администратора. В той же ситуации NVM не может изменить версию. Мой подход заключается в настройке NVM_SYMLINK D: Project NVM v8.11.4 в переменной среды. Для переключения версий узла требуется только изменить номер версии, соответствующий пути NVM переменной среды, например: NVM_SYMLINK D: Project NVM v6.9.0. Таким образом, хотя проблема была решена, каждый раз, когда я менял версию, это доставляло неудобства, и на данный момент я не находил лучшего решения.

У меня работает решение "Сагана" от переполнения стека:
https://stackoverflow.com/questions/28313372/nvm-for-windows-not-working

Для меня,

nvm list 

image

Затем я удаляю папку v8.9.4 из nvm.
image

После этого:

nvm list 

image

Затем я возвращаю v8.9.4 назад.

Это происходит для меня в Windows 10 10.0.17134.165
Я попробовал решение, упомянутое @ituasdu, и оно сработало. Спасибо!!!

Если вы обнаружили, что после того, как попробовали cmd, например:
nvm use 6.10.0
и версия nodejs не была изменена, вы можете запустить cmd.exe или powershell администратором.
image

У меня была такая же проблема при переключении между узлами 6.6.0 и 7.9.0 (Windows 10), но решение ituasdu не работало. Переустановка nvm тоже не сработала.

Я запустил nvm install latest (установлен 11.3.0), и это как-то исправило это для меня.

Обходной путь:
"C: Program Filesnodejs" переименован в "C: Program Filesnodejsx",
Затем из расширенного cmd, называемого "nvm use 8.9.1" (любая версия, которая у вас есть, должна работать ...), и он начал работать.
Проблема, по-видимому, в том, что если каталог nodejs существует, nvm не может изменить его на символическую ссылку, и «сбой молча» будет хорошо с ошибкой и сообщением об ошибке с указанием проблемы.

Это сработало для меня.
image

PS > nvm use 11.4.0
Now using node v11.4.0 (64-bit)
PS > node -v
v10.11.0
PS > nvm use 11.4.0
Now using node v11.4.0 (64-bit)
PS > node -v
v11.4.0

@ituasdu у меня тоже сработало .. спасибо .. :)

@ituasdu Спасибо, сработало

У меня тоже работает, спасибо.

Я не знаю, может ли это пролить свет на проблему, но в моем случае я думаю, что это произошло после установки новой версии node без nvm (вручную). Похоже, это действие сводит с ума nvm.

@coreybutler есть какие-нибудь мысли об установке символической ссылки в папку, которая не требует прав администратора? Я знаю, что это может быть немного плохой формой для разработчиков Windows, но это определенно поможет обойти все эти проблемы, особенно в сильно закрытой корпоративной среде, где получение прав администратора является огромной проблемой.

Другая боль - это то, от чего я сейчас страдаю (не из-за nvmw), где, хотя в некоторых случаях у меня действительно есть права администратора, каждый раз, когда я хочу переключаться между версиями узла, мне приходится открывать другое окно cmd, запустите cmd от имени администратора и, наконец, запустите nvm use 10.15.1 (например). затем вернитесь к моему dev, окну cmd. ах. опять же, боль из-за env работы, а не из-за nvmw. (кстати, nvmw - это круто).

просто мысль. ;-)

Запустите nvm use <node.js version you want to use> (например, nvm use 10.15.3 ) под Powershell ISE, поскольку администратор решил проблему в моей Windows 10.

Мне нужно запустить nvm use any.version несколько раз под Powershell от имени администратора, чтобы он заработал. Он случайным образом меняет версию с первой, второй или третьей попытки (версия NVM 1.1.7).

Я попытался исправить это, установив Link Shell Extension и выполнив следующие действия:

  1. щелкните правой кнопкой мыши на C:\Program Files\nodejs
  2. выберите _Pick Link Source_
  3. щелкните правой кнопкой мыши C:\Program Files
  4. выберите _Drop as ..._> _Symbolic Link_
  5. переименовать nodejs - SymbolicLink в nodejsx

Но, к сожалению, проблема все еще возникает.

Могу подтвердить, что решение

@ituasdu у меня работает, спасибо.

@ monico-moreno - в следующий раз напишите мне по электронной почте, если я не отвечаю месяцами :) Чтобы ответить на ваш вопрос, вы можете установить в любую папку, которую хотите, с помощью установщика. Тем не мение; все символические ссылки в Windows требуют прав администратора, за исключением некоторых режимов разработчика в новых выпусках Windows 10. Суть в том, что в какой-то момент в игру вступают права администратора.

Кроме того, возможно, вы сможете провести бета-тестирование системы меню, когда я завершу ее (переключение версий на панели задач Windows). Будет ли это лучший рабочий процесс?

  • Откройте панель управления и удалите nvm и node.
  • установите nvm-setup.zip с https://github.com/coreybutler/nvm-windows/releases
  • открыть командную строку. Введите nvm install @version. тогда nvm используйте версию.
  • установить пряжу. затем в командной строке запустите yarn install или yarn.
  • проверьте версию узла с помощью узла -v.

У меня была аналогичная проблема, но по другой причине.

D:\> node -v
v12.14.0
D:\> nvm use 8.9.4
Now using node v8.9.4 (64-bit)
D:\> node -v
v12.14.0

// problem
D:\> where node
D:\soft\nodejs\node.exe // <- old nvm used this one
C:\Program Files\nodejs\node.exe // <- new nvm was changing this one

IIRC У меня была предыдущая версия nvm, установленная на D: soft, и она меняла ссылку D: softnodejs. В какой-то момент старый nvm перестал работать, потому что репозиторий npm изменил местоположение (если работает - не трогайте, пожалуйста). Мне пришлось установить новый nvm, и я предполагаю, что новый nvm отказался изменять старую ссылку, вместо этого он обновлял ссылку C: Program Filesnodejs. Итак, я удалил D: softnodejs, и это было исправлено.

Благодаря @delepster, который предложил удалить старый узел, это помогло мне обнаружить проблему.

сегодня мы установили на три компьютера, два из которых с установленной операционной системой Windows 10 и один с сервером Windows. Обе машины с ОС Windows 10 потеряли свои функции поиска при запуске, но не одна с ОС Windows Server. Таким образом, вы больше не можете набирать название нужной программы и видеть ее.

У кого-нибудь еще есть такая же проблема?

@putko, это проблема с Windows, которая появилась сегодня, подтверждена и исправлена ​​MS. см. этот твит https://twitter.com/tomwarren/status/1225110095010418689

Обходной путь:
"C: Program Filesnodejs" переименован в "C: Program Filesnodejsx",
Затем из расширенного cmd, называемого "nvm use 8.9.1" (любая версия, которая у вас есть, должна работать ...), и он начал работать.
Проблема, по-видимому, в том, что если каталог nodejs существует, nvm не может изменить его на символическую ссылку, и «сбой молча» будет хорошо с ошибкой и сообщением об ошибке с указанием проблемы.

Это сработало для меня.
image

PS > nvm use 11.4.0
Now using node v11.4.0 (64-bit)
PS > node -v
v10.11.0
PS > nvm use 11.4.0
Now using node v11.4.0 (64-bit)
PS > node -v
v11.4.0

У меня это тоже сработало.

Была аналогичная проблема с 1.1.7 , наконец выяснилось, что файл settings.txt игнорируется. nvm use будет делать абсолютно ничего, пока я вручную не установлю NVM_SYMLINK . Кроме того, без установки SYMLINK nvm попытается удалить . , что, мягко говоря, интересно.

Параметр path в settings.txt , который содержит то, что должно использоваться по умолчанию как SymLink, никогда не читается и не используется для инициализации:
https://github.com/coreybutler/nvm-windows/blob/88353cfcea140e02e2b13584fd89454adc9f52b3/src/nvm.go#L727 -L751

В последней версии Windows 10 Pro, где я выполнял новую установку, я столкнулся с той же проблемой.

Мои обычные шаги по настройке моей машины:

  1. Установите основные зависимости (NodeJS и Docker)
  2. Установите IDE (на этом этапе Visual Studio 2019 с отделами разработки .NET, NodeJS и Python)
  3. Установите дополнительные зависимости, такие как Windows Terminal, шрифты PL, nvm, tmux, WSL2 и т. Д.

@ituasdu прав в своем утверждении, когда я переименовал свой файл nodejs, это позволило мне использовать nvm use и фактически установить его. В противном случае он бы ошибся и сказал мне, что версия установлена, и так далее, но он не установил версию, и я застрял с LTS, который был установлен изначально.

Я знаю, что на самом деле есть строка о том, что мы должны удалить существующий узел, который я пропустил в первый раз на README.md, но, использовав nvm-windows, прежде чем я не проверял его снова, я просто установил его через шоколадный и забыл об этом . (возможно ли просто выполнить удаление npm как часть установки для шоколадного или просто определить, есть ли он, и предложить пользователю сначала удалить его, прежде чем разрешить им установить nvm?)

(возможно ли просто выполнить удаление npm как часть установки для шоколадного или просто определить, есть ли он, и предложить пользователю сначала удалить его, прежде чем разрешить им установить nvm?)

Я думаю, что это возможно: этот запрос следует направить разработчику пакета Chocolatey nvm .

Это происходит, когда на вашем компьютере отдельно установлен Node (с веб-сайта или из диспетчера пакетов). Их удаление и установка через nvm должны решить проблему.

У меня такая же проблема, и использование PS в режиме администратора не решает проблему. (Windows 10.0.18363)

image

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