Нпм 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, чтобы использовать другой каталог.
Нам нужно создать каталог для глобальных установок, в этом примере внутри каталога пользователя:
mkdir ~/.npm-global
Мы настраиваем npm для использования нового пути к каталогу:
npm config set prefix '~/.npm-global'
Откройте или создайте файл ~/.profile и добавьте следующую строку:
export PATH=~/.npm-global/bin:$PATH
Мы обновляем ваши системные переменные:
source ~/.profile
Теперь мы можем протестировать, установив пакет глобально, без использования прав root.
npm install -g jsonfile
Другой вариант, чтобы избежать всех этих шагов и изменить ~/.profile, это будет путем определения переменной ENV с помощью следующей команды (:
NPM_CONFIG_PREFIX=~/.npm-global
У меня тоже была ошибка разрешения 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
: см. выше в коде).