【译】如何防止权限错误
原文档:How to Prevent Permissions Errors
当你全局安装依赖包的时候,如果遇到EACCES问题,请阅读此章节。
如果你改变npm的安装目录,你是可以防止这类问题发生的。你可以用两种方法解决此问题:
方法一:用版本管理工具重装npm
这是解决权限问题的最好方法。这已经在章节二中讲解了。在安装node版本管理工具之前,你不需要移除掉你当前版本的npm或者Node.js。
方法二:改变npm的默认安装目录
此方法暂不支持Windows系统,不过很快我们会针对Windows更新此章节。
为了尽可能的减少权限错误问题,你可以使用不同的目录来配置npm。在本事例中,就是指的你的主目录下的一个隐藏目录。
配置npm使用此新目录:
npm config set prefix '~/.npm-global'
打开或者创建~/.profile文件并且添加一行:
export PATH=~/.npm-global/bin:$PATH
测试:不用sudo下载一个全局包:
或者你如果不想用2-4步骤的话,你也可以使用相关的环境变量(比如:你不想更改~/.profile文件)
小贴士:考虑到npx
如果你在用[email protected]或者更高版本,探索npx作为运行全局命令的替代方法,尤其是当你只是偶尔需要一个命令的时候。可以看这一篇关于npx的优秀文章。
=========================分割线=========================
我使用的第二种方法,暂时高高兴兴的耍了。但是当我npm i npm -g后,npm -v发现还是之前的版本。。我&&#!@&#&*#,然后which npm发现也是~/.npm-global下的,这就奇怪了。。思来想去,想起来有一步骤source ~/.profile,哦,原来是么得生效,source一下果然是新版本了。
但是,后来又一想,第二种方法的根本不就是更改npm的prefix配置么,何必这么繁琐,于是把~/.profile文件删掉,把~/.npm-global目录删掉,把npm的prefix更改为之前的/usr/local,然后再-g安装,已经么得问题了,over。
得到教训:只知npm 命令,不知npm 配置,后续继续跟进更多配置。