简体   繁体   中英

npm ERR! code EACCESS by installing @angular/cli

Environment:

  • Ubuntu 16.04
  • node v8.11.1 (installed with package manager)
  • npm v5.6.0

After the clean installation of npm and trying to install @angular/cli

npm install -g @angular/cli

I'm getting an error related with EACCESS that it is probably related with permissions because it disappears with root access. The thing is that it is not recommended to use it that way, so how could I solve this?

Console ERROR

$ 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

File .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 ]

One option to deal with this problem will be to change npm's default directory to use a different directory.

  1. We need to make a directory for global installations, in this example inside user directory:

     mkdir ~/.npm-global 
  2. We configure npm to use the new directory path:

     npm config set prefix '~/.npm-global' 
  3. Open or create a ~/.profile file and add this line:

     export PATH=~/.npm-global/bin:$PATH 
  4. We update your system variables:

     source ~/.profile 

Now we can test by installing a package globally without using root permissions.

npm install -g jsonfile

Another option to avoid all these steps and modifying ~/.profile, it will be by defining an ENV variable with the following command(:

NPM_CONFIG_PREFIX=~/.npm-global

npm reference

I had the EACCES permission error too. I did a fresh install of Ubuntu 18.04. The 16.04 version may not be much different. It all works for me. Hope this helps.

----------- FOR YOU, YOU SHOULD APPLY THIS CODE FROM HERE

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.:)

----------- TO THERE

THIS IS THE USE CASE I WORKED ON AFTER I INSTALLED THE ABOVE. YOURS SHALL WORK TOO IF THE ABOVE IS WELL SET UP.

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!

Note: if you were to install npm i debug --global instead, you may still get that EACCES permission error as your local user will not be able to access root permissions elsewhere in your file system. That's why we use 'change ownership' (ie chown your_user : see above in the code).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM