рыбная оболочка и глобальные модули npm

У меня проблемы с локальной средой.

Я использую:

  • доморощенный (1.1.4)
  • панцирь рыб (2.4)
  • n менеджер версий (2.1.0)
  • узел
  • npm

Все вышеперечисленное изначально было установлено через homebrew.

Проблемы:

  • Никакие глобально установленные модули не могут быть запущены.
  • Не могу обновить версии npm.

Я регулярно использую версии узлов 0.10.48 и 6.9.2, но в основном 4.6.2.

Я создал несколько псевдонимов в fish, чтобы иметь возможность запускать глобальные модули. Я бы предпочел устранить первопричину, а не продолжать применять дополнительные пластыри.

Дополнительная информация:

~> npm config get prefix
/Users/me/.npm-packages

~> npm bin
/Users/me/node_modules/.bin

Что происходит, когда я пытаюсь обновить npm:

~> npm install -g npm@3
/Users/me/.npm-packages/bin/npm -> /Users/me/.npm-packages/lib/node_modules/npm/bin/npm-cli.js
[email protected] /Users/me/.npm-packages/lib/node_modules/npm
~> npm -v
2.15.9

Когда я пытаюсь вызвать глобальный модуль:

~> gulp
fish: Unknown command 'gulp'

Что я пробовал для исправления глобальных модулей:

~> cat ~/.config/fish/config.fish
set fish_user_paths /Users/me/.npm-packages

ls ~/.config/fish/functions
bower.fish ember.fish pm2.fish

~> cat ~/.config/fish/functions/bower.fish 
function bower
    /Users/me/.npm-packages/bin/bower  $argv;
end

Мы будем очень благодарны за любую помощь, которую вы можете оказать! Я пытался исправить это некоторое время, но безуспешно!


person kurt343    schedule 14.12.2016    source источник
comment
Это похоже на простой случай, когда /Users/me/.npm-packages/bin/ не находится в PATH. echo $PATH включает /Users/me/.npm-packages/bin/?   -  person ridiculous_fish    schedule 15.12.2016
comment
Спасибо за ответ. Я только что проверил, и, похоже, он там:   -  person kurt343    schedule 20.12.2016
comment
echo $PATH показывает двоеточие? (Не должно, это должно выглядеть с разделителями-пробелами) Если двоеточия нет, значит gulp должно быть где-то еще. Что показывает which gulp при запуске из среды, в которой работает gulp?   -  person ridiculous_fish    schedule 21.12.2016
comment
Еще раз спасибо за ответ. echo $PATH ~> /Users/me/.npm-packages /usr/local/bin /usr/bin /bin /usr/sbin /sbin Я пробовал which gulp (и другие модули), но ничего не возвращает. Я пробовал и в рыбной раковине, и в баше.   -  person kurt343    schedule 23.12.2016
comment
Хм, а что тогда type gulp в bash?   -  person ridiculous_fish    schedule 24.12.2016
comment
У меня очень похожая настройка, и мне приходится запускать nvm use default для каждой новой оболочки, см. Также github .com / fisherman / nvm / issues / 11   -  person fanaugen    schedule 03.02.2017
comment
Для всех, кто читает это, я не верю, что моя проблема больше связана конкретно с рыбной оболочкой, поскольку я тестировал bash и zsh и сталкивался с той же проблемой.   -  person kurt343    schedule 09.06.2017


Ответы (4)


Вы можете использовать установленные модули npm. Вам просто нужно добавить глобальный путь npm к оболочке. Для этого я запустил:

$ npm config get prefix
// Output: /usr/local/Cellar/node/9.2.1

а затем добавил в мой fish/config.fish:

set PATH /usr/local/Cellar/node/9.2.1/bin $PATH

Это ссылка на Github, которая помогла мне решить проблему.

person cesards    schedule 02.08.2018

Что происходит, когда вы устанавливаете приложение узла глобально https://docs.npmjs.com/getting-started/fixing-npm-permissions

Настройка в OSX 10.12.5 с помощью примера команды fish v2.6.0 node v8.1.0 в терминале возвращает оба

term~> npm install jshint -g
/Users/username/npm-global/lib/node_modules/bin/jshint -> 
/Users/username/npm-global/lib/node_modules/jshint/bin/jshint

ПУТЬ, который у вас должен быть в оболочке, чтобы вы могли выполнить jshint (установленный пакет) -> указывая на фактическое место установки

Включите строку ниже для настройки PATH в файле ~ / .profile

export PATH="$HOME/npm-global/lib/node-modules/:$PATH"
person Mahinth    schedule 13.06.2017

Мое постоянное решение (с macOS Mojave и рыбой 2.7.1):

set -U fish_user_paths /Users/{USERNAME}/.npm-packages/bin $fish_user_paths

Кстати, ниже работает, но только в терминальном сеансе:

set PATH $PATH /Users/{USERNAME}/.npm-packages/bin

Примечание: вы можете найти путь к npm-пакетам с помощью:

printf "%s\n" $PATH
person LacOniC    schedule 28.03.2019

Я решил эту проблему, полностью удалив (и удалив все следы) node, npm и n, удалив оболочку fish и вместо этого переключившись на zsh.

Впоследствии я установил nvm и использовал его для восстановления node на своей машине.

Глобальные модули npm теперь работают.

person kurt343    schedule 09.06.2017