Среда:
После чистой установки 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 ]
Да, это какое-то заблуждение. Я предполагаю, что это будет по умолчанию и легко разрешить эту проблему, но документация npm рекомендует изменить каталог по умолчанию, чтобы предотвратить ошибки разрешений.





Один из вариантов решения этой проблемы - изменить каталог по умолчанию 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
Шаг 3 говорит Open or create a ~/.profile file - не могли бы вы объяснить, как выполнить эту часть шага?
У меня тоже была ошибка разрешения 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
Не рекомендуется? Тут же сказано в ошибке Пожалуйста, попробуйте запустить эту команду еще раз от имени пользователя root / администратора. Это может быть не идеально, но рекомендуется.