本机情况:
服务器系统:CentOS 8.1
nodejs版本:20
问题描述:
在命令行执行命令,npm install -g nrm
,全局安装nrm。
安装之后,执行nrm ls
报command not found: nrm
。
问题解决方案:
解决全局安装包时的EACCES权限错误
如果您在尝试全局安装一个包时看到EACCES
错误,您可以:手动更改npm的默认目录
注意:本节不适用于Microsoft Windows。
为了最大限度地减少权限错误的机会,您可以将npm配置为使用不同的目录。在此示例中,您将在主目录中创建和使用隐藏目录。
-
备份您的计算机。
-
在命令行的主目录中,为全局安装创建一个目录:
bashmkdir ~/.npm-global
-
配置npm使用新的目录路径:
bashnpm config set prefix '~/.npm-global'
-
在您首选的文本编辑器中,打开或创建一个
~/.profile
文件并添加以下行:【root
目录下新建一个.profile
文件写入下面这一行】bashexport PATH=~/.npm-global/bin:$PATH
-
在命令行上,更新您的系统变量:
bashsource ~/.profile
-
要测试您的新配置,请在不使用
sudo
的情况下全局安装一个包:bashnpm install -g nrm
您可以使用相应的ENV变量(例如,如果您不想修改
~/.profile
)来代替步骤3-5:
bashNPM_CONFIG_PREFIX=~/.npm-global
npx:运行全局命令的替代方案
如果您使用的是npm 5.2或更高版本,您可能需要考虑将npx作为运行全局命令的替代方式,尤其是当您只是偶尔需要命令时。有关详细信息,请参阅这篇关于npx的文章。
成功演示:
参考文献:
[1] Resolving EACCES permissions errors when installing packages globally | npm Docs (npmjs.com)