【译】如何防止权限错误

原文档:How to Prevent Permissions Errors

当你全局安装依赖包的时候,如果遇到EACCES问题,请阅读此章节。

如果你改变npm的安装目录,你是可以防止这类问题发生的。你可以用两种方法解决此问题:

  1. 用版本管理工具重装npm (推荐)

  2. 手动改变npm的默认安装目录

方法一:用版本管理工具重装npm

这是解决权限问题的最好方法。这已经在章节二中讲解了。在安装node版本管理工具之前,你不需要移除掉你当前版本的npm或者Node.js

方法二:改变npm的默认安装目录

此方法暂不支持Windows系统,不过很快我们会针对Windows更新此章节。 为了尽可能的减少权限错误问题,你可以使用不同的目录来配置npm。在本事例中,就是指的你的主目录下的一个隐藏目录。

  1. 开始前需要备份你的电脑

  2. 创建一个存放全局安装模块的目录:

    makdir ~/.npm-global
  3. 配置npm使用此新目录:

    npm config set prefix '~/.npm-global'
  4. 打开或者创建~/.profile文件并且添加一行:

    export PATH=~/.npm-global/bin:$PATH
  5. 回到命令行,更新你的系统变量:

    source ~/.profile

测试:不用sudo下载一个全局包:

npm i -g jshint

或者你如果不想用2-4步骤的话,你也可以使用相关的环境变量(比如:你不想更改~/.profile文件)

NPM_CONFIG_PREFIX=~/.npm-global

小贴士:考虑到npx 如果你在用[email protected]或者更高版本,探索npx作为运行全局命令的替代方法,尤其是当你只是偶尔需要一个命令的时候。可以看这一篇关于npx的优秀文章。

=========================分割线=========================

我使用的第二种方法,暂时高高兴兴的耍了。但是当我npm i npm -g后,npm -v发现还是之前的版本。。我&&#!@&#&*#,然后which npm发现也是~/.npm-global下的,这就奇怪了。。思来想去,想起来有一步骤source ~/.profile,哦,原来是么得生效,source一下果然是新版本了。 但是,后来又一想,第二种方法的根本不就是更改npmprefix配置么,何必这么繁琐,于是把~/.profile文件删掉,把~/.npm-global目录删掉,把npmprefix更改为之前的/usr/local,然后再-g安装,已经么得问题了,over。

得到教训:只知npm 命令,不知npm 配置,后续继续跟进更多配置。

Last updated

Was this helpful?