Визуальную студию кода, чтобы использовать узел версию, указанную НВМ


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

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

OS X terminal

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

VS Code Terminal

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

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/местные/Бен:/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/profile (или /etc/zprofile) вызывается /usr/libexec/path_helper, который выполняет функцию Path switcheroo.

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

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

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

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

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

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

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

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

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

Введите описание изображения здесь

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

Введите описание изображения здесь

В vs-коде goto launch.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"
    }
]}