尝试全局安装socket.io时出错

Joh*_*Lee 2 node.js npm socket.io

我是node,npm,socket.io的新手.找到了许多非常有用的指南,但我遇到了一些我不明白原因的错误,希望你能帮助我.

npm install socket.io -g
Run Code Online (Sandbox Code Playgroud)

回报......

npm http GET https://registry.npmjs.org/socket.io
npm http 304 https://registry.npmjs.org/socket.io
npm ERR! error installing socket.io@0.9.4
npm ERR! error rolling back socket.io@0.9.4 Error: EACCES, unlink   '/usr/local/lib/node_modules/socket.io/.npmignore'
npm ERR! Error: EACCES, unlink '/usr/local/lib/node_modules/socket.io/.npmignore'
npm ERR! Report this *entire* log at:
npm ERR!     <http://github.com/isaacs/npm/issues>
npm ERR! or email it to:
npm ERR!     <npm-@googlegroups.com>
npm ERR! 
npm ERR! System Darwin 10.8.0
npm ERR! command "node" "/usr/local/bin/npm" "install" "socket.io" "-g"
npm ERR! cwd /Users/Kinglee
npm ERR! node -v v0.6.14
npm ERR! npm -v 1.1.0-beta-4
npm ERR! path /usr/local/lib/node_modules/socket.io/.npmignore
npm ERR! code EACCES
npm ERR! message EACCES, unlink '/usr/local/lib/node_modules/socket.io/.npmignore'
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /Users/Kinglee/npm-debug.log
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时npm install socket.io,没有错误,一切都很好.

对不起忘记在这里添加此信息...

我实际上尝试sudo npm install socket.io并安装没有错误,但当我尝试cd ~/node_modules,我没有看到socket.io,这是因为'socket.io not found' error当我尝试这样做,require('socket.io')因为我在这里遵循这个教程(http://blog.koostudios.com/?p= 470)

这里有点迷茫的家伙:/

sar*_*old 10

最重要的部分是:

EACCES, unlink   '/usr/local/lib/node_modules/socket.io/.npmignore'
Run Code Online (Sandbox Code Playgroud)

这意味着您无权删除此文件.

我认为这意味着您将命令作为标准用户帐户运行,该帐户将没有写入权限/usr/.

sudo在您的命令前面以管理员权限重新运行该命令:

sudo npm install socket.io -g
Run Code Online (Sandbox Code Playgroud)

您的本地配置可能没有/usr/local/lib/node_modules/node的默认模块加载位置.模块加载路径通过NODE_PATH环境变量(启动前node)或require.paths变量(一旦node运行)控制.因为我更喜欢将本地配置与程序分开,所以我更喜欢将环境变量设置为修改路径,尽管其他机制可能对长期存在的应用程序很有用,即使环境发生变化也必须保持这些应用程序.(这绝对是一种高级用途.)

要更改NODE_PATH单个实例的变量,sh其衍生物将允许您NODE_PATH=/path在命令之前简单地添加.例如,更改:

node ./foo.js
Run Code Online (Sandbox Code Playgroud)

NODE_PATH=/usr/local/lib/node_modules ./foo.js
Run Code Online (Sandbox Code Playgroud)

如果您有多个目录,请使用标准的:-separated目录,就像您一样PATH:

NODE_PATH=/usr/local/lib/node_modules:/home/sarnold/node_modules ./foo.js
Run Code Online (Sandbox Code Playgroud)

要使其持久化,请使用shell的export内置函数将NODE_PATH变量的值导出到所有子项,并将修改放在shell的启动文件中,例如~/.bashrc:

export NODE_PATH=/usr/local/lib/node_modules
Run Code Online (Sandbox Code Playgroud)

这将自动在所有新shell中生效.source如果您不想重新启动它们,可以将此文件转换为当前运行的shell:

source ~/.bashrc
Run Code Online (Sandbox Code Playgroud)