我无法在全球范围内安装Browserify(或任何内容)。我可以毫无问题地安装非全局的东西。
背景:我在代理后面的公司网络上运行CentOS 6.6。我使用“yum”作为root安装了Node.js.
$ sudo yum -y install nodejs
和npm(由于某种原因未与nodejs一起安装):
$ sudo yum -y install nodejs npm
将Node.js和NPM安装到目录:
$ which node
/usr/bin/node
$ which npm
/usr/bin/npm
并将“node_modules”放在/ usr / lib / node_modules下。
就像我说的那样,我在代理服务器后面,所以我将“proxy”和“https-proxy”配置属性设置为正确的值。
当我尝试安装browserify时(在their site上指定)
$ npm install -g browserify
我收到了错误
...npm ERR! stack Error: EACCES, mkdir '/usr/lib/node_modules/browserify'...
所以我“ch”了/ usr / lib / node_modules目录,让我可以访问node_modules中的mkdirs:
$ sudo chown -R $USER /usr/lib/node_modules
错误: 现在,当我尝试全局安装browserify时,我得到一个不同的错误:
npm ERR! Error: EACCES, symlink '../lib/node_modules/browserify/bin/cmd.js'
npm ERR! { [Error: EACCES, symlink '../lib/node_modules/browserify/bin/cmd.js']
npm ERR! errno: 3,
npm ERR! code: 'EACCES',
npm ERR! path: '../lib/node_modules/browserify/bin/cmd.js' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.
npm ERR! System Linux 2.6.32-431.el6.x86_64
npm ERR! command "node" "/usr/bin/npm" "install" "-g" "browserify"
npm ERR! cwd /usr/lib/node_modules
npm ERR! node -v v0.10.33
npm ERR! npm -v 1.3.6
npm ERR! path ../lib/node_modules/browserify/bin/cmd.js
npm ERR! code EACCES
npm ERR! errno 3
npm ERR! stack Error: EACCES, symlink '../lib/node_modules/browserify/bin/cmd.js'
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /usr/lib/node_modules/npm-debug.log
npm ERR! not ok code 0
我需要更改一些特殊内容以允许NPM创建符号链接吗?
另外,我尝试以root身份运行安装,但它只是坐在那里直到最终超时:
...npm ERR! network tunneling socket could not be established, cause=read ECONNRESET...
答案 0 :(得分:0)
我最近遇到过这个问题。全局模块应以root用户身份安装(sudo)。我的进程失败的地方(类似于你的进程)是以root身份运行时的超时。这是因为NPM正在使用“git”协议。要安装软件包,我必须将以下内容运行到我的git config。
git config --global url."https://".insteadOf git://
这解决了我的问题。
答案 1 :(得分:0)
我终于可以使用npm全局安装模块了。
我做了什么:
我不得不使用sudo并在几个地方设置proxy / https代理。我遵循了这篇博客的建议:http://wil.boayue.com/blog/2013/06/14/using-npm-behind-a-proxy/。
我在〜/ .bashrc中设置以下变量并导出它们:
我还使用visudo将它们添加到env_keep(因此它们可用于sudo)。
然后我使用以下命令在npm上设置代理和https-proxy配置设置:
$ npm config set proxy http://<proxy>:<port>
$ npm config set proxy http://<proxy>:<port>
我不确定是否所有这些都是必要的,但它对我有用。此外,有一次我意识到我有不正确的代理,不得不在几个地方更改它(所以一定要仔细检查)。