Подтвердить что ты не робот

Npm install -g меньше не работает

Я пытаюсь настроить меньше на phpstorm, поэтому я могу скомпилировать бездействующие файлы в .css при сохранении. Я установил node.js, и следующий шаг (в соответствии с этим https://www.jetbrains.com/webstorm/help/transpiling-sass-less-and-scss-to-css.html) выполняется эта команда в терминале

npm install -g less

Однако, когда я это делаю, я получаю эти ошибки

☁  ~  npm install -g less
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/mkdirp/0.5.1'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/graceful-fs/3.0.8'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/extend/3.0.0'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/readable-stream/2.0.4'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/chalk/1.1.1'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/xtend/4.0.1'
npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules
/usr/local/lib
└─┬ [email protected]
  ├─┬ [email protected]
  │ └── [email protected]
  ├── [email protected]
  ├── [email protected]
  ├─┬ [email protected]
  │ └── [email protected]
  └─┬ [email protected]
    └── [email protected]

npm ERR! Darwin 15.0.0
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "-g" "less"
npm ERR! node v5.0.0
npm ERR! npm  v3.3.6
npm ERR! path /usr/local/lib/node_modules
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall access

npm ERR! Error: EACCES: permission denied, access '/usr/local/lib/node_modules'
npm ERR!     at Error (native)
npm ERR!  { [Error: EACCES: permission denied, access '/usr/local/lib/node_modules']
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'access',
npm ERR!   path: '/usr/local/lib/node_modules' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.

npm ERR! Please include the following file with any support request:
npm ERR!     /Users/brentscholl/npm-debug.log

Я здесь полный noob и не знаю, что делать дальше. Любая помощь будет очень оценена!

4b9b3361

Ответ 1

Использование sudo не рекомендуется. Это может дать вам разрешение вопроса позже. Хотя вышеперечисленное работает, я не являюсь поклонником изменения папок, принадлежащих пользователю root, для записи для пользователей, хотя это может быть проблемой только для нескольких пользователей. Чтобы обойти это, вы можете использовать группу с "пользователями npm", но это также требует дополнительных административных затрат. Смотрите здесь для вариантов, чтобы иметь дело с разрешениями из документации: https://docs.npmjs.com/getting-started/fixing-npm-permissions

Я бы пошел на вариант 2:

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

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

 mkdir ~/.npm-global

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

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

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

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

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

 source ~/.profile

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

npm install -g jshint

Если все еще показывает ошибку разрешения запуска (Mac OS):

sudo chown -R $USER ~/.npm-global   

Это работает с установкой Ubuntu по умолчанию:

sudo apt-get install nodejs npm

Я рекомендую nvm если вы хотите больше гибкости в управлении версиями: https://github.com/creationix/nvm

На MacOS используйте brew, он должен работать без sudo из коробки, если вы используете последнюю версию npm. Наслаждаться :)

Ответ 2

Оригинальный ответ:

Примечание. Настоятельно рекомендуется избегать использования sudo с npm!

Основываясь на моем комментарии выше, похоже, что вам может потребоваться установить модуль с правами root с помощью sudo:

sudo npm install -g less

Причина, по которой он требует прав root, вероятно, потому, что вы установили nodejs/npm с привилегиями root. В результате пользователь root является владельцем каталога ~/.npm, что объясняет, почему вы ~/.npm ошибками разрешений.


Альтернативы:

Если вы хотите избежать использования sudo при установке пакетов, существует несколько альтернатив:

  • Один из вариантов - обновить владельца каталога ~/.npm как это предлагается в этом ответе.

    sudo chown -R $(whoami) ~/.npm
    
  • Другим вариантом, который я лично использую, является использование NVM, который является менеджером версий узлов, который позволяет устанавливать несколько версий узла без прав root. При этом вы можете устанавливать пакеты npm по всему миру без использования sudo и избегать проблем с разрешением.

  • Вы также можете проверить документацию npm по устранению проблем с разрешением. Первым вариантом, который они перечисляют, является использование NVM, о котором уже говорилось выше. Их второй вариант включает изменение npm каталога по умолчанию.

Ответ 3

Запустите эти команды в окне терминала (обратите внимание: НЕ замените часть USER... это команда linux, чтобы получить вашего пользователя!):

sudo chown -R $USER ~/.npm
sudo chown -R $USER /usr/lib/node_modules
sudo chown -R $USER /usr/local/lib/node_modules

Ответ 4

Переустановите узел и npm с помощью Node Version Manger (как написано в документации по npm), чтобы избежать ошибок разрешения:

В OSX:

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash

или следуйте этой статье:

http://dev.topheman.com/install-nvm-with-homebrew-to-use-multiple-versions-of-node-and-iojs-easily/

Пользователи Windows должны установить nvm-windows. Для дальнейшей помощи, как установить nvm, обратитесь к readme nvm.

Затем выберите, например:

nvm install 8.0.0
nvm use 8.0

Теперь вы можете дать еще одну попытку:

npm install -g less

Ответ 5

Mac OS X Ответ

У вас нет прав на запись в каталог node_modules

npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules

Добавьте своего пользователя в каталог с правами на запись

  1. Открыть папку, содержащую node_modules

    открыть/usr/local/lib/

  2. Выполните команду cmd + я в папке node_modules, чтобы открыть диалоговое окно разрешений
  3. Добавьте своего пользователя, чтобы иметь права на чтение и запись в разделе общего доступа и разрешений enter image description here

Ответ 6

Используйте sudo -i для переключения на $ root, затем выполните npm install -g xxxx

Ответ 7

Это сработало для меня:

В командной строке в своем домашнем каталоге создайте каталог для глобальных установок:

mkdir ~/.npm-global

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

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

В предпочитаемом вами текстовом редакторе откройте или создайте файл ~/.profile и добавьте ~/.profile строку:

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

В командной строке обновите системные переменные:

source ~/.profile

Чтобы протестировать новую конфигурацию, установите пакет глобально, не используя sudo:

npm install -g jshint

Источник: https://docs.npmjs.com/resolving-eacces-permissions-errors-when-install-packages-globally

Ответ 8

Это сработало для меня! Большое спасибо. СНО

Ответ 9

Для пользователей Mac OS

сначала установите Homebrew

скопируйте и вставьте эту строку в свой терминал

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

После установки вы можете запустить в терминале команду npm install -g less.

Ответ 10

Для моей среды Mac

sudo chown -R $USER /usr/local/lib/node_modules

решить проблему

Ответ 11

Привет, я использую Ubuntu 18, и я тоже получил это сообщение об ошибке при установке Prisma, тогда я просто добавляю sudo на передней панели

sudo npm i -g prisma