【问题标题】:npm install failingnpm 安装失败
【发布时间】:2012-12-07 12:01:30
【问题描述】:

首先我要说我几乎没有在终端或 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

我使用的帐户应该具有管理员权限。谷歌搜索我发现了一些建议,但似乎没有一个对我有用。尝试使用 sudo 前置命令但得到:

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

【问题讨论】:

  • which npm 输入时会输出什么?

标签: linux bash node.js shell npm


【解决方案1】:

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

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

  • 通过npm的完整路由

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

    $ sudo -E npm install -g socket.io
    

更新:

请注意,建议将-g 标志仅用于可执行文件,并在本地(不带标志)安装代码中的required 库。将可执行文件复制到/usr/bin 或在您的情况下为/usr/local/bin 需要特权

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

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

【讨论】:

    【解决方案2】:

    如果您使用的是 Arch Linux,请查看 AUR 中的 npm2arch 包。它可以让你使用 pacman 安装 npm 包。

    例子:

    npm2archinstall socket.io
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-04
      • 1970-01-01
      • 2018-06-06
      • 2020-10-31
      • 2017-12-03
      相关资源
      最近更新 更多