Нпм 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 ]

1 ответ

Один из вариантов решения этой проблемы - изменить каталог по умолчанию для 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

У меня тоже была ошибка разрешения 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: см. выше в коде).

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