nvm, узел и т. д. пути отсутствуют в интегрированном терминале - PullRequest
0 голосов
/ 18 мая 2018

Я использую инсайдерскую редакцию и zsh с омышем внутри iTerm2 на OSX High Sierra.

Если я запускаю интегрированную командную строку в VSCode echo $path, возвращается:

/Users/username/.yarn/bin:/Users/username/.cargo/bin:/usr/bin:/usr/bin/lldb:
/Users/username/bin:/usr/local/bin:/Users/username/.scripts:
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin

Очевидно,, путь к узлу, путь nvm и т. д. отсутствуют, поэтому терминал мне не очень полезен.

Но ввод echo $path в моем терминале вне VSCode возвращает:

/Users/username/.nvm/versions/node/v9.0.0/bin /Users/username/.yarn/bin
/Users/username/.cargo/bin /usr/bin /usr/bin/lldb /Users/username/bin
/usr/local/bin /Users/username/.scripts /usr/local/bin /usr/bin /bin /usr/sbin
/sbin /opt/X11/bin

Какиесодержит все пути, необходимые для моей деятельности по разработке.

У меня есть этот псевдоним в моем ~/.zshrc:

code () { VSCODE_CWD="$PWD" open -n -b "com.microsoft.VSCodeInsiders" --args $* ;}

Если я запускаю код с использованием псевдонима от внешнего терминала, пути к узлам

Насколько я вижу, это происходит потому, что загрузка кода из ярлыка Dock не загружает терминал, используя мой профиль пользователя, поэтому вместо этого он загружает профиль из /etc/zprofile, который устанавливает путь, используя/usr/libexec/path_helper поэтому он пропускает все мои важные пути, которые мне нужны для разработки.

Я подозреваю, что большинство людей предпочли бы использовать настройки из своих профилей пользователей.Это будет означать, что все наши dev-приложения будут работать от встроенного терминала, а также до конца печально известной ошибки nvm is not compatible with the npm config "prefix" option, вызванной неправильной настройкой путей.

Как я могу заставить VSCode использовать средутерминал в моем профиле пользователя при запуске из Dock?

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

Документация vscode также предлагает решение для предупреждения nvm is not compatible with the npm config "prefix" option: currently set to "/usr/local":

https://github.com/Microsoft/vscode-docs/blob/master/docs/editor/integrated-terminal.md#why-is-nvm-complaining-about-a-prefix-option-when-the-integrated-terminal-is-launched

Из документов:

В основном это macOSпроблема и не происходит во внешних терминалах.Типичными причинами этого являются следующие:

npm был глобально установлен с использованием другого экземпляра node, который находится где-то на вашем пути (например, /usr/local/bin/npm).Чтобы получить инструменты разработки на $PATH, VS Code при запуске запускает оболочку входа в bash.Это означает, что ваш ~/.bash_profile уже запущен, и когда запускается встроенный терминал, он запустит другую оболочку входа в систему, что может привести к непредвиденному изменению порядка $PATH.Чтобы решить эту проблему, вам нужно отследить, где установлен старый npm, и удалить как устаревшие, так и устаревшие node_modules.Вы можете сделать это, найдя сценарий инициализации nvm и запустив which npm перед его запуском, который должен напечатать путь при запуске нового терминала.

Как только вы получите путь к npm, вы можете найтистарые node_modules путем разрешения символической ссылки, выполнив команду примерно так:

ls -la /usr/local/bin | grep npm

Это даст вам разрешенный путь в конце:

... npm -> ../lib/node_modules/npm/bin/npm-cli.js

Оттуда удаление файлов и повторный запуск кода VS должны решить проблему:

rm -R /usr/local/bin/npm /usr/local/lib/node_modules/npm/bin/npm-cli.js

0 голосов
/ 18 мая 2018

Зайдите в настройки и отредактируйте встроенный терминал

// Object with environment variables that will be added to the VS Code process to be used by the terminal on OS X
  "terminal.integrated.env.osx": {},

там вы можете передать свои переменные

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...