我刚刚通过nodejs.org上的包安装了node和npm,每当我尝试使用npm搜索或安装某个东西时,它会抛出以下错误,除非我执行命令。我觉得这是权限问题?我已经是管理员了。

npm ERR! Error: EACCES, open '/Users/chietala/.npm/-/all/.cache.json'
npm ERR!  { [Error: EACCES, open '/Users/chietala/.npm/-/all/.cache.json']
npm ERR!   errno: 3,
npm ERR!   code: 'EACCES',
npm ERR!   path: '/Users/chietala/.npm/-/all/.cache.json' }
npm ERR! 
npm ERR! Please try running this command again as root/Administrator.

npm ERR! System Darwin 12.2.0
npm ERR! command "node" "/usr/local/bin/npm" "search" "bower"
npm ERR! cwd /Users/chietala
npm ERR! node -v v0.10.4
npm ERR! npm -v 1.2.18
npm ERR! path /Users/chietala/.npm/-/all/.cache.json
npm ERR! code EACCES
npm ERR! errno 3
npm ERR! stack Error: EACCES, open '/Users/chietala/.npm/-/all/.cache.json'
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /Users/chietala/npm-debug.log
npm ERR! not ok code 0

当前回答

这是我使用和使用的解决方案。我尝试使用whoami,但从未奏效。

sudo chown-R$USER/usr/local/lib/node_modules

then

sudo chown-R$USER/usr/local/bin/npm

then

sudo chown-R$USER/usr/local/bin/node

其他回答

TL;博士

在运行npm安装以安装全局包时,请始终使用sudo-i或sudo-H。


当您使用npm时,它会将包下载到您的用户主目录。当您以sudo身份运行时,npm会将文件安装到同一目录中,但现在它们归root用户所有。

所以,这是每一个使用过npm的人都会遇到的情况:

使用npm install foo毫无问题地安装一些本地软件包使用sudo install-g foo-cli安装全局软件包,无问题尝试使用npm安装栏安装本地软件包对npm设计者感到沮丧,因为你必须重新创建一个目录

在sudo中使用-i或-H选项时,主目录将是root的主目录。任何全局安装都会将包缓存到/root/.npm,而不是/home/me/.npm中的root拥有的文件。

只要在运行npm安装来安装全局包时始终使用sudo-i或sudo-H,您的npm权限问题就会迎刃而解。

永远。

--问:修复一个已经一团糟的npm的公认答案。

我将我的用户帐户设置为/usr/local目录的所有者,这样就可以在那里发出正常命令。

sudo chown-R$USER/usr/local

参考:http://howtonode.org/introduction-to-npm

此外,您还需要node_modules目录中的写入权限:

sudo chown -R $USER /usr/local/lib/node_modules

@Yves M.的回答与我的解决方案非常相似。以下是我使用的命令,与他的略有不同。

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh | bash

然后查询最新版本:

nvm ls-remote

然后安装最新版本:

nvm install YOUR_VERSION_HERE

实例

nvm install v5.8.0
sudo chown -R `whoami` /usr/local/lib