我是node,npm,socket.io的新手。找到了许多非常有用的指南,但是我遇到了一些我不明白原因的错误,希望你能帮助我。
npm install socket.io -g
返回......
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
然而当我做npm install socket.io
时,没有错误,一切都很好。
抱歉忘记在此处添加此信息...
我实际上尝试了sudo npm install socket.io
并且安装时没有错误但是当我尝试cd ~/node_modules
时,我没有看到socket.io,这导致'socket.io not found' error
当我尝试require('socket.io')
时1}}我在这里按照本教程(http://blog.koostudios.com/?p=470)
这里有点迷茫的人:/
答案 0 :(得分:9)
最重要的部分是:
EACCES, unlink '/usr/local/lib/node_modules/socket.io/.npmignore'
这意味着您无权删除此文件。
我认为这意味着您将该命令作为标准用户帐户运行,该帐户将不具有/usr/
的写入权限。
在命令前加sudo
以使用管理员权限重新运行命令:
sudo npm install socket.io -g
/usr/local/lib/node_modules/
的默认模块加载位置中,您的本地配置可能没有node
。模块加载路径由NODE_PATH
环境变量(开始node
之前)或require.paths
变量(node
运行一次)控制。因为我更喜欢将本地配置与程序分开,所以我更喜欢将环境变量设置为修改路径,尽管其他机制可能对长期存在的应用程序很有用,即使在环境发生变化时也必须保持这些应用程序。 (这绝对是一种高级用法。)
要更改单个实例的NODE_PATH
变量,sh
及其衍生产品将允许您在命令之前添加NODE_PATH=/path
。例如,更改:
node ./foo.js
到
NODE_PATH=/usr/local/lib/node_modules ./foo.js
如果您有多个目录,请使用标准:
- 分隔目录,就像使用PATH
一样:
NODE_PATH=/usr/local/lib/node_modules:/home/sarnold/node_modules ./foo.js
要使此持久化,请使用shell的export
内置函数将NODE_PATH
变量的值导出到所有子项并将修改放入shell的启动文件中,例如~/.bashrc
:
export NODE_PATH=/usr/local/lib/node_modules
这将自动在所有新shell中生效。如果您不想重新启动它们,可以source
将此文件转换为当前正在运行的shell:
source ~/.bashrc
答案 1 :(得分:0)
离开这里,因为它帮助我解决了类似的问题: NPM no longer working
有一些好的答案。 希望它有所帮助。