Терминал VS Code не может использовать версию npm от nvm

Я использую nvm на своем терминале и успешно установил узел 10.2.1, который также установил npm 6.1.0. Однако, когда я захожу в свой редактор VS Code, он выдает предупреждения во встроенном терминале для:

npm WARN npm npm does not support Node.js v10.2.1
npm WARN npm You should probably upgrade to a newer version of node as we
npm WARN npm can't make any promises that npm will work with this version.
npm WARN npm Supported releases of Node.js are the latest release of 4,6, 7, 8, 9.

Оказывается, на самом деле используется npm 5.5.1 (npm -v).

Я проверял, что с этим случилось, попытался копнуть дальше и в конце концов использовал: which npm как на интегрированном терминале, так и на интерфейсе командной строки Mac.

Терминал Mac показывает: /Users/Aiz/.nvm/versions/node/v10.2.1/bin/npm

Терминал VS Code показывает: /usr/local/bin/npm. Что интересно, потому что если вы сделаете which node в этом терминале, это приведет к соответствующему /Users/Aiz/.nvm/versions/node/v10.2.1/bin/node.

Я не уверен, как заставить мой терминал VS Code указывать на соответствующую установку npm через nvm. Не уверен, что это поможет, но я проверил npm get prefix и npm -g bin, чтобы найти /Users/Aiz/.nvm/versions/node/v10.2.1. Единственное отличие, которое я нахожу, - это то, откуда каждый терминал использует npm.


person aizkhaj    schedule 29.05.2018    source источник


Ответы (2)


В итоге я просмотрел проблемы VS Code на GitHub и наткнулся на кое-что, имеющее отношение к NVM и проблемам узлов. Это устранило мою проблему, поскольку основная причина была той же.

По сути, произошло то, что у меня была глобальная установка узла до того, как я удалил ее перед использованием NVM, но не удалил свою глобальную установку npm. Это вызывало конфликты в терминале VS Code (а не в терминале Mac). Чтобы исправить это, вам необходимо найти символическую ссылку для which npm и удалить рекурсивно связанные node_modules и npm.

Вот ссылка, которая вам понадобится: https://github.com/Microsoft/vscode-docs/blob/master/docs/editor/integrated-terminal.md#why-is-nvm-complaining-about-a-prefix-option-when-the-интегрированный-терминал-запущен.

Не забудьте после этого перезапустить редактор.

person aizkhaj    schedule 29.05.2018

Другое решение - реализовать это. https://medium.com/@kinduff/automatic-version-switch-for-nvm-ff9e00ae67f3

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

Он действительно зависит от zsh.

person Paul Bartlett    schedule 12.12.2018
comment
Это также исправляет контроль версий vscode при попытке выполнить привязку фиксации на основе узла! ???? - person borisrorsvort; 08.03.2021