npm安装失败

我会开始说我有没有在terminal或node.js工作的经验。

同事离开休假,我试图按照他留下的指示在我们的演示服务器上设置他的应用程序。 我可以让一切在本地运行,但是在安装socket.io模块的服务器上遇到问题。

装了python,安装了nodejs,都成功了。 但是然后我发出命令:

npm install -g socket.io 

而我得到的输出是:

 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 

我正在使用的帐户应该拥有pipe理员权限。 我search了一些build议,但似乎没有为我工作。 试图与sudo预先命令,但得到:

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

如果没有特权,我也有同样的错误,所以在使用-g标志时我必须使用sudo

如果sudo不识别npm,你可以尝试:

  • 通过npm的完整路线

     $ sudo $(which npm) install -g socket.io 
  • 用-E标志保护环境

     $ sudo -E npm install -g socket.io 

UPD:

请注意,建议仅对可执行文件使用-g标志并在本地安装(不带标志)代码中require d的库。 要将可执行文件复制到/usr/bin或者在/usr/local/bin中,需要特权

请注意,在socket.io站点中,安装命令不包含-g标志;)

阅读更多: http : //blog.nodejs.org/2011/03/23/npm-1-0-global-vs-local-installation/

如果您在Arch Linux上,请查看AUR中的npm2arch软件包。 它会让你使用pacman安装npm包。

例:

 npm2archinstall socket.io