Код Visual Studio для использования версии узла, указанной NVM

возможно ли для кода VS использовать версию узла, указанную NVM?

у меня установлен 6.9.2 локально. Даже после переключения на другую версию, с терминала OS X (не терминал VS Code), перезапуск VS Code, VS Code все еще показывает использование 6.9.2.

терминал OS X

MacBook-Pro-3:~ mac$ node -v
v7.8.0

VS код терминала

MacBook-Pro-3:QB-Invoice-API mac$ node -v
v6.9.2

5 ответов


решение состоит в том, чтобы установить псевдоним default. В терминале ОС запустите -

nvm alias default 7.8.0

открыть vscode, теперь работает node -v возвращает 7.8.0

кажется, vscode принимает это значение (псевдоним по умолчанию), а не версию узла, которая установлена nvm use X.X.X


добавить runtimeExecutable на .vscode/launch.json такой

{
  "type": "node",
  "request": "launch",
  "name": "App",
  "program": "${workspaceRoot}/index.js",
  "runtimeExecutable": "${env:HOME}/.nvm/versions/node/v6.9.2/bin/node"
}

у меня была такая же проблема, как неспособность сохранить мою версию узла, указанную через nvm в моей среде OS X не только с VSCode, но и с редактором Atom (используя пакет platformio-ide-terminal для управления интегрированным терминалом в нем). Ни одно из предложений в предыдущих ответах не сработало для меня, кроме того, я не использовал отладчик, а использовал gulp и grunt для конкретных задач. По-видимому, nvm не ладит со встроенными терминалами или суб-оболочками, по крайней мере, в этих редакторах потому что при загрузке их переменная среды $PATH изменяется внутренне и делает следующее В соответствии с комментарием одного из участников этого пакета в этой проблеме, сообщенной здесь NVM не загружается во вложенную оболочку #1652:

" @charsleysa Я знаю, почему nvm бросает эту ошибку. В вашей подсетке каким-то образом часть/usr/local/bin:/usr/bin:/bin:/usr/sbin: / sbin вашего пути была перемещена из конца пути в начать.

  • когда nvm затем запускается, он вызывает nvm_change_path (мой вклад изменил его на это из nvm_prepend_path), который изменяет соответствующую nvm часть пути на месте.
  • Nvm затем проверяет текущий префикс npm, спрашивая npm, что это такое. Поскольку /usr/local/bin /npm теперь имеет прецендент, он сообщает/usr/local / bin.
  • Nvm затем проверяет, находится ли текущий префикс, о котором сообщает npm, в дереве каталогов текущего узла nvm версия (на этом этапе каталог установки версии узла, к которой относится псевдоним nvm по умолчанию).
  • префикс не является частью этого дерева, поэтому он деактивирует себя (вызывая nvm_strip_path в процессе, поэтому в пути вашей подсети нет пути, связанного с nvm), и завершает ошибку, которую вы получаете. в macOS это /и т. д./профиль (или /etc/zprofile) звонки в /usr/IP-адресов/path_helper, который делает махнулись пути.

в родительской оболочке, Путь еще не имеет NVM dir в нем, поэтому к моменту запуска nvm он добавляет свой каталог к пути. Но в подрешетке путь был перенастроен macOS, чтобы поместить любые несистемные каталоги в конце, и у нас есть проблема."

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

nvm не совместим с параметром "префикс" конфигурации npm: в настоящее время установлено значение " / usr / local" Запустить npm config delete prefix или nvm use --delete-prefix vx.x.x --silent удалить он.

то, что я сделал, чтобы решить это в моем случае, было частью "обходного пути" той же проблемы, о которой сообщается, что по существу следующее:

  • сбросьте путь, добавив следующую строку внутри my ~/.файл на самом верху, прежде чем что-нибудь еще: PATH="/usr/local / bin:$(путь getconf)"

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

здесь другое альтернатива на случай, если это не поможет так много.


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

вам нужно сначала открыть поддон команд и выбрать "установить' код ' в путь."

enter image description here

а затем запустите терминал и выберите свой узел через nvm, а затем запустите "код".

enter image description here


в vs код goto запуска.json и добавьте атрибут runtimeVersion внутри конфигураций, как показано ниже. (предполагая, что 4.8.7 уже установлен с помощью nvm)

{
"version": "<some-version>",
"configurations": [
    {
        "type": "node",
        "runtimeVersion": "4.8.7", // If i need to run node 4.8.7
        "request": "launch",
        "name": "Launch",
        "program": "${workspaceFolder}/sample.js"
    }
]}