npm install failing

2019-02-21 17:39发布

问题:

I'll start off by saying that I have next to no experience working in terminal or with node.js.

Coworker left for vacation and I'm trying to follow instructions he left for setting up his app on our demo server. I can get everything running locally, but am running into issues on the server installing socket.io module.

Installed python, installed nodejs, both successful. But then I issue the command:

npm install -g socket.io

And the output I get is:

npm http GET https://registry.npmjs.org/socket.io
npm http 304 https://registry.npmjs.org/socket.io
npm ERR! Error: EACCES, mkdir '/usr/local/lib/node_modules/socket.io'
npm ERR!  { [Error: EACCES, mkdir '/usr/local/lib/node_modules/socket.io']
npm ERR!   errno: 3,
npm ERR!   code: 'EACCES',
npm ERR!   path: '/usr/local/lib/node_modules/socket.io',
npm ERR!   fstream_type: 'Directory',
npm ERR!   fstream_path: '/usr/local/lib/node_modules/socket.io',
npm ERR!   fstream_class: 'DirWriter',
npm ERR!   fstream_stack:
npm ERR!    [ 'DirWriter._create (/usr/local/lib/node_modules/npm/node_modules/fstream/lib/dir-writer.js:36:23)',
npm ERR!      '/usr/local/lib/node_modules/npm/node_modules/mkdirp/index.js:37:53',
npm ERR!      'Object.oncomplete (fs.js:297:15)' ] }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.

npm ERR! System Linux 2.6.32-279.el6.x86_64
npm ERR! command "/usr/local/bin/node" "/usr/local/bin/npm" "install" "-g" "socket.io"
npm ERR! cwd /home/qa
npm ERR! node -v v0.8.16
npm ERR! npm -v 1.1.69
npm ERR! path /usr/local/lib/node_modules/socket.io
npm ERR! fstream_path /usr/local/lib/node_modules/socket.io
npm ERR! fstream_type Directory
npm ERR! fstream_class DirWriter
npm ERR! code EACCES
npm ERR! errno 3
npm ERR! stack Error: EACCES, mkdir '/usr/local/lib/node_modules/socket.io'
npm ERR! fstream_stack DirWriter._create (/usr/local/lib/node_modules/npm/node_modules/fstream/lib/dir-writer.js:36:23)
npm ERR! fstream_stack /usr/local/lib/node_modules/npm/node_modules/mkdirp/index.js:37:53
npm ERR! fstream_stack Object.oncomplete (fs.js:297:15)
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR!     /home/qa/npm-debug.log
npm ERR! not ok code 0

The account I'm on should have admin privileges. Googling around I found some suggestions but none seemed to work for me. Tried prepending command with sudo but get:

[qa@umr-demo ~]sudo npm install -g socket.io
[sudo] password for qa:
sudo: npm: command not found

回答1:

I have the same error if not privileged, so I must use sudo when using the -g flag

If sudo don't recongize npm you can try:

  • passing the complete route of npm

    $ sudo $(which npm) install -g socket.io
    
  • preserving the environment with -E flag

    $ sudo -E npm install -g socket.io
    

Upd:

Note that is recommended to use the -g flag only for executables and install locally (without the flag) the libraries that are required in your code. Privileges are required for copying the executables to /usr/bin or, in your case /usr/local/bin

Note too that in the socket.io site, the -g flag is not included for the installation command ;)

Read more: http://blog.nodejs.org/2011/03/23/npm-1-0-global-vs-local-installation/



回答2:

If you are on Arch Linux, check out the npm2arch package in the AUR. It will let you install npm packages using pacman.

Example:

npm2archinstall socket.io