Npm ERR! код EACCESS, установив @ angular / cli

Среда:

  • Ubuntu 16.04
  • узел v8.11.1 (устанавливается с менеджером пакетов)
  • npm v5.6.0

После чистой установки npm и попытки установить @ angular / cli

npm install -g @angular/cli

Я получаю сообщение об ошибке, связанной с EACCESS, что, вероятно, связано с разрешениями, потому что оно исчезает с доступом root. Дело в том, что так использовать не рекомендуется, так как я могу это решить?

ОШИБКА консоли

$ npm install -g @angular/cli
npm WARN checkPermissions Missing write access to /usr/lib/node_modules
npm ERR! path /usr/lib/node_modules
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall access
npm ERR! Error: EACCES: permission denied, access '/usr/lib/node_modules'
npm ERR!  { Error: EACCES: permission denied, access '/usr/lib/node_modules'
npm ERR!   stack: 'Error: EACCES: permission denied, access \'/usr/lib/node_modules\'',
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'access',
npm ERR!   path: '/usr/lib/node_modules' }
npm ERR! 
npm ERR! Please try running this command again as root/Administrator.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/user/.npm/_logs/2018-04-25T15_23_36_781Z-debug.log

Файл .npm / _logs / 2018-04-25T15_23_36_781Z-debug.log

2566 warn checkPermissions Missing write access to /usr/lib/node_modules
2567 verbose stack Error: EACCES: permission denied, access '/usr/lib/node_modules'
2568 verbose cwd /opt/workspace/roscam-front
2569 verbose Linux 2.6.32-042stab120.19
2570 verbose argv "/usr/bin/node" "/usr/bin/npm" "install" "-g" "@angular/cli"
2571 verbose node v8.11.1
2572 verbose npm  v5.6.0
2573 error path /usr/lib/node_modules
2574 error code EACCES
2575 error errno -13
2576 error syscall access
2577 error Error: EACCES: permission denied, access '/usr/lib/node_modules'
2577 error  { Error: EACCES: permission denied, access '/usr/lib/node_modules'
2577 error   stack: 'Error: EACCES: permission denied, access \'/usr/lib/node_modules\'',
2577 error   errno: -13,
2577 error   code: 'EACCES',
2577 error   syscall: 'access',
2577 error   path: '/usr/lib/node_modules' }
2578 error Please try running this command again as root/Administrator.
2579 verbose exit [ -13, true ]

Не рекомендуется? Тут же сказано в ошибке Пожалуйста, попробуйте запустить эту команду еще раз от имени пользователя root / администратора. Это может быть не идеально, но рекомендуется.

R. Richards 25.04.2018 18:08

Да, это какое-то заблуждение. Я предполагаю, что это будет по умолчанию и легко разрешить эту проблему, но документация npm рекомендует изменить каталог по умолчанию, чтобы предотвратить ошибки разрешений.

Joe 25.04.2018 18:13
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
2
1 082
2

Ответы 2

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

  1. Нам нужно создать каталог для глобальных установок, в этом примере внутри каталога пользователя:

    mkdir ~/.npm-global
    
  2. Мы настраиваем npm для использования нового пути к каталогу:

    npm config set prefix '~/.npm-global'
    
  3. Откройте или создайте файл ~ / .profile и добавьте эту строку:

    export PATH=~/.npm-global/bin:$PATH
    
  4. Мы обновляем ваши системные переменные:

    source ~/.profile
    

Теперь мы можем протестировать, установив пакет глобально без использования прав root.

npm install -g jsonfile

Другой вариант избежать всех этих шагов и изменить ~ / .profile - это определить переменную ENV с помощью следующей команды (:

NPM_CONFIG_PREFIX=~/.npm-global

ссылка на npm

Шаг 3 говорит Open or create a ~/.profile file - не могли бы вы объяснить, как выполнить эту часть шага?

Kyle Vassella 25.10.2020 20:56

У меня тоже была ошибка разрешения EACCES. Я сделал новую установку Ubuntu 18.04. Версия 16.04 может не сильно отличаться. У меня все работает. Надеюсь это поможет.

----------- ДЛЯ ВАС ВЫ ДОЛЖНЫ ПРИМЕНИТЬ ЭТОТ КОД ЗДЕСЬ.

sudo apt-get install curl software-properties-common
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt install nodejs
node -v
npm -v
npm init
whoami

which npm              # returned /usr/bin
npm config get prefix  # returned /usr
npm config set prefix /usr/bin
npm config get prefix
ls -la /usr/bin/npm    # has a symbolic link to ../lib/node_modules/npm/bin/npm-cli.js
sudo chown -R your_user /usr/bin/npm   # NOT /usr/bin or we lock out sudo too!!!!
sudo chown -R your_user app-folder/
ls -la /usr/bin/npm
npm init  # I was curious to see if this still works
npm install  # WORKS GREAT!!! No need for sudo now.:)

----------- ТУДА

ЭТО СЛУЧАЙ ИСПОЛЬЗОВАНИЯ, над которым я работал после того, как УСТАНОВИЛ ВЫШЕ. ВАШЕ ДОЛЖНО РАБОТАТЬ, ЕСЛИ ВЫШЕУКАЗАННОЕ УСТАНОВЛЕНО ХОРОШО.

npm start # script
npm run start:prod  # works as well
npm i debug --save-dev     # works but need to install 'make'
sudo apt install build-essential
npm i debug --save-dev    # installed and launched successfully!

Примечание: если вам нужно было установить npm i debug --global вместо этого, вы все равно можете получить эту ошибку разрешения EACCES, поскольку ваш локальный пользователь не сможет получить доступ к разрешениям root где-либо еще в вашей файловой системе. Вот почему мы используем «смену владельца» (например, chown your_user: см. Выше в коде).

Я основал и скомпилировал свое решение на этом видео: youtube.com/watch?v=bxvybxYFq2o

timotom 12.07.2019 01:00

Другие вопросы по теме