Разрешение запрещается при установке модулей npm в OSX

Я пытаюсь установить node-g.raphael, и я получаю следующую ошибку:

Bender-03:htdocs alfred$ sudo npm install node-g.raphael --save
Password:

> [email protected] install 
  /Users/alfred/Sites/twistedgeo/htdocs/node_modules/contextify
> node-gyp rebuild

gyp ERR! configure error
gyp ERR! stack Error: EACCES: permission denied, mkdir 
  '/Users/alfred/Sites/twistedgeo/htdocs/node_modules/contextify/build'
gyp ERR! System Darwin 16.7.0
gyp ERR! command "/usr/local/bin/node" 
  "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" 
  "rebuild"
gyp ERR! cwd 
  /Users/alfred/Sites/twistedgeo/htdocs/node_modules/contextify
gyp ERR! node -v v8.8.1
gyp ERR! node-gyp -v v3.6.2
gyp ERR! not ok
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] 
  (node_modules/contextify):
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] 
  install: 'node-gyp rebuild'
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Exit status 1

+ [email protected]
added 2 packages and updated 1 package in 6.556s

Я пробовал это решение, но это не решает мою проблему, все еще получая ту же ошибку.

Дайте мне знать, если что-нибудь, что я могу добавить, чтобы помочь в решении этого.

Ответ 1

Видел это из Исправления разрешений npm, и это помогло, может быть, вы могли бы также попробовать.

  • Вариант 1. Измените разрешение на каталог по умолчанию npm

    1. Найдите путь к каталогу npm:

      npm config get prefix

Для многих систем это будет /usr/local.

ВНИМАНИЕ: Если отображаемый путь - просто /usr, переключитесь на Вариант 2, или вы испортите свои разрешения.

  1. Измените владельца каталогов npm на имя текущего пользователя (ваше имя пользователя):

    sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}

Это изменяет права доступа к подпапкам, используемым npm и некоторыми другими инструментами (lib/node_modules, bin и share).

  • Вариант 2: Изменить каталог по умолчанию npm на другой каталог

Временами вы не хотите менять владельца каталога по умолчанию, который использует npm (то есть /usr), так как это может вызвать некоторые проблемы, например, если вы используете систему совместно с другими пользователями.

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

  1. Создайте каталог для глобальных установок:

    mkdir ~/.npm-global

  2. Настройте npm для использования нового пути к каталогу:

    npm config set prefix '~/.npm-global'

  3. Откройте или создайте файл ~/.profile и добавьте ~/.profile строку:

    export PATH=~/.npm-global/bin:$PATH

  4. Вернитесь в командную строку и обновите системные переменные:

    source ~/.profile

Тест: Загрузите пакет глобально без использования sudo.

'npm install node-g.raphael --save'

Вместо шагов 2-4 вы можете использовать соответствующую переменную ENV (например, если вы не хотите изменять ~/.profile):

NPM_CONFIG_PREFIX=~/.npm-global
  • Вариант 3: Используйте менеджер пакетов, который позаботится об этом за вас.

Если вы делаете новую установку Node на Mac OS, вы можете полностью избежать этой проблемы, используя менеджер пакетов Homebrew. Homebrew устанавливает вещи из коробки с правильными разрешениями.

brew install node

надеюсь, это поможет

Ответ 2

Я использую:

1 - npm config get prefix

2 - sudo chown -R $ (whoami) $ (префикс префикса конфигурации npm)/{lib/node_modules, bin, share}

3 - sudo npm install

Ответ 3

Проблема исправлена для меня, выполнив следующую команду.

sudo npm install -g @angular/cli

Удалось установить угловой.

Затем попробуйте запустить ng -v для подтверждения.