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

标签 node.js socket.io npm

我是 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')正如我在这里学习本教程 ( http://blog.koostudios.com/?p=470 )

有点困惑的家伙:/

最佳答案

最重要的部分是:

EACCES, unlink   '/usr/local/lib/node_modules/socket.io/.npmignore'

这意味着您没有删除该文件的权限。

我假设这意味着您以标准用户帐户运行该命令,该帐户没有写入 /usr/ 的权限。

在您的命令前添加 sudo 以使用管理员权限重新运行该命令:

sudo npm install socket.io -g

您的本地配置在 node 的默认模块加载位置中可能没有 /usr/local/lib/node_modules/。模块加载路径通过 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

关于node.js - 尝试全局安装 socket.io 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9968442/

相关文章:

javascript - Mongoose 从 html datepicker 中查找 2 个日期之间的结果

javascript - Web 在 Cheerio 中抓取 HTML 表格

javascript - Nodejs/cheerio/x-ray 中的动态链接

javascript - ES6 : Unexpected token import

javascript - 包.json : dependency in a local directory?

javascript - 如何列出 React 项目中未使用的节点模块/依赖项?

javascript - 尝试发送 POST 请求时收到 404 错误

node.js - 使用快速 session 的套接字 IO - socket.request.res undefined

java - 当我使用套接字时垃圾收集器循环

android - 通过反向代理服务器将 socket.io android 客户端连接到套接字服务器