Код 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 передаст некоторые аргументы, например, местоположение сценария запуска узла, которое будет неверно интерпретировано, поэтому "фиктивный" помещает все параметры в одно место. Это может быть что угодно, но оно должно быть там.