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

Возможно ли, чтобы VS Code использовал версию node, указанную NVM?

Я установил 6.9.2 локально. Даже после перехода на другую версию, с терминала OS X (а не на терминал VS Code), перезапуск VS-кода, VS-код по-прежнему показывает использование 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

Ответ 1

Решение заключается в установке псевдонима по default. В терминале ОС -

nvm alias default 7.8.0

Открыть vscode, теперь запущенный node -v возвращает 7.8.0

Кажется, что vscode берет это значение (по умолчанию), а не версию узла, установленную nvm use XXX

Обновление (12/04/2018) - Это решение может не работать для всех. Ниже приведены ответы на другие решения.

Ответ 2

добавьте 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"
}

Ответ 3

В VS Code перейдите в файл 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"
    }
]}

Ответ 4

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

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

  • Когда 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 в вашей подсетей PATH), и освобождается от ошибок, которые вы получаете. macOS/etc/profile (или /etc/zprofile) вызывает /usr/libexec/path_helper, что делает PATH switcheroo.

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

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

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

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

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

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

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

Ответ 5

У меня была та же проблема, но приведенные выше ответы не помогли.

По-видимому, shellArgs по умолчанию для osx устанавливаются в bash пока я использую zsh. Я решил проблему, установив shellArgs в моих пользовательских настройках в пустой массив:

"terminal.integrated.shellArgs.osx": []

Ответ 6

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

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

enter image description here

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

enter image description here

Ответ 7

Я использую oh-my-zsh, и он тоже не использовал версию узла, указанную в nvm. Попробовал несколько предложений, размещенных здесь, но единственный способ решить эту проблему - добавить следующую строку в начало ~/.zshrc

PATH="/usr/local/bin:$(getconf PATH)"

Ответ 8

Я перепробовал все предложенные решения, но ничего не получалось.

/usr/local/bin/node указывает куда-то. я сделал символическую ссылку на определенную папку узла nvm, и это решало проблему для меня:

ln -s /Users/mad/.nvm/versions/node/v11.1.0/bin/node /usr/local/bin/node

Ответ 9

У меня та же проблема, и я обнаружил, что у меня установлен node brew и nvm. Я удалил node установленный brew и версии на терминале и в коде Visual Studio теперь совпадают.

Ответ 10

В моем случае я попытался первый ответ (установить по умолчанию....), и он не работал, но затем я перезапустил VS Code, и он работал.

Ответ 11

Не пробовал все решения, но у меня просто сработало обновление nvm.

Просто следуйте установке здесь и убедитесь, что вы bash_profile обновляется.

Ответ 12

Особенно с оболочкой у меня проблем не было, но вы можете:

  • проверьте правильность настройки или изменения вашей оболочки (возможно, вы используете разные оболочки для vscode или вашего терминала)
  • проверьте ваш env и, если он не установлен должным образом, используйте terminal.integrated.env.<platform>

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

    {
        "type": "node",
        "request": "launch",
        "name": "Launch Program",
        "program": "${workspaceFolder}/server.js",
        "runtimeExecutable": "/bin/bash",
        "runtimeArgs": ["-c", ". ~/.nvm/nvm.sh;nvm run default \"[email protected]\"", "dummy"]
    },

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

Примечание. Параметр "dummy" является обязательным, поэтому остальные параметры анализируются правильно.

Более подробное объяснение "фиктивного": в сценариях оболочки используются позиционные параметры, где первым будет само местоположение сценария (с адресом $0), при использовании флага -c сценарий читается на месте, а значение $0 не устанавливается. vscode передаст некоторые аргументы, например, местоположение сценария запуска узла, которое будет неверно интерпретировано, поэтому "фиктивный" помещает все параметры в одно место. Это может быть что угодно, но оно должно быть там.