npm install -g less не работает: EACCES: разрешение запрещено

203

Я пытаюсь настроить меньше на phpstorm, чтобы я мог скомпилировать файлы .less в .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
└─┬ less@2.5.3
  ├─┬ errno@0.1.4
   └── prr@0.0.0
  ├── image-size@0.3.5
  ├── mime@1.3.4
  ├─┬ promise@6.1.0
   └── asap@1.0.0
  └─┬ source-map@0.4.4
    └── amdefine@1.0.0

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

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

xslibx
источник

Ответы:

354

Использование 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версию. Наслаждаться :)

Винсент Джеррис
источник
Heads up-- на Ubuntu 18.04 Я должен был выйти и снова войти в систему, прежде чем изменения были применены автоматически для всех новых окон терминала.
Александр Нид
Александр, вы убедились, что использовали исходную команду? Это должно позаботиться о настройке правильных переменных среды, выход из системы не требуется (но работает).
Винсент Джеррис
это не сработало $ npm install -g jshint npm ERR! напиши после окончания npm ERR! Полный журнал этого прогона можно найти в: npm ERR! /home/xx/.npm/_logs/2019-02-22T06_35_08_821Z-debug.log
Амжит,
3
Спасибо за это «На MacOS используй варево»
Биджендер Сингх
110

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

sudo chown -R $USER ~/.npm
sudo chown -R $USER /usr/lib/node_modules
sudo chown -R $USER /usr/local/lib/node_modules
Вагнер Родригес
источник
7
Это хорошая идея, чтобы сделать себя владельцем вещей в /usr? Что если кто-то еще захочет установить узел?
Mark
6
Работал для меня на MacOS High Sierra, я нужен только один из трех команд: sudo chown -R $USER /usr/local/lib/node_modules. @Mark Это правда, но это, конечно, не проблема, если у вас есть только один пользователь.
Фабиан фон Эллертс
@FabianvonEllerts Ну, все равно проще случайно удалить системные файлы, так как вам больше не понадобится sudo ... Я бы просто следовал рекомендациям даже в одиночку, но, конечно, решать вам.
Марк
Я с Марком, если у вас нет одного пользователя (и даже тогда), вы не хотите, чтобы подкаталоги / usr принадлежали одному пользователю, в этом случае лучше использовать группу. Но, возможно, даже лучше, просто используйте brew, как я уже упоминал в своем ответе, он будет работать без рута из коробки.
Винсент
11

Переустановите узел и 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
gazdagergo
источник
1
Я использовал это для решения проблем с разрешениями при установке пакетов на CodeSandbox.
Кит Тейлор
11

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 + I в папке node_modules, чтобы открыть диалоговое окно разрешений.
  3. Добавьте своего пользователя, чтобы иметь права на чтение и запись в разделе общего доступа и разрешений введите описание изображения здесь
Родерик Йонссон
источник
Самое простое и эффективное решение для MacOS
itazzad
8

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

user3393929
источник
7

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

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

решить вопрос

Асадут Заман
источник
Я полагаю, что это уже описано в ответе @ VagnerRodrigues выше.
Entpnerd
Да, я только что упомянул о среде Mac
Асадут Заман
3

Просто нажмите ниже команды:

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

Давайте разберемся с этим:

Судо

означает, что мы выполняем эту команду от имени пользователя root, системного суперпользователя. Это потому, что у нас нет разрешения на запись в эту папку, но root сможет исправить любое разрешение. Эта команда также означает, что система запросит ваш пароль для подтверждения.

Чаун

это команда, которую мы используем, чтобы изменить владельца файла или папки. Мы устанавливаем опцию -R для рекурсивного изменения владельца, поэтому мы также получаем доступ владельца ко всем файлам, уже содержащимся в нем.

$ USER

переменная окружения, автоматически устанавливаемая на ваше имя пользователя

И последний кусок - путь к папке.

Запуск этого пути сделает вашу папку, так что вы можете спокойно запускать команды npm install -g!

Акаш Сингх Сенгар
источник
0

Я перепробовал все предложенные решения, но ничего не получалось.

Я использую macOS Catalina 10.15.3

Перейдите в / usr / local /

Выберите папку bin> Get Info

Добавьте вашего пользователя в раздел «Разрешения и доступ». Разрешения на чтение и запись. введите описание изображения здесь

И зайдите в терминал и запустите npm install -g @ ionic / cli

Это помогло мне.

Гоар Султан
источник
-1

В Linux убедитесь, что получили все права:

sudo su
кира
источник
-3

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

sudo npm i -g prisma
UA_
источник