解决 Ubuntu下 NPM 全局安装的 permissiont denied 问题

489 阅读1分钟

错误信息

Error: EACCES: permission denied, mkdir 'xxxxx'

image.png

解决问题

从错误信息中我们可以看出, 在创建目录的时候需要管理员权限导致安装失败,解决思路就是将全局的安装路径放到用户的home下面

获取当前配置信息

$ npm config get prefix
$ /usr/local/lib/nodejs/node-v18.12.0-linux-x64
# 因为我是手动安装的,所以路径会有一些不同

在当前用户下新建一个文件夹,用来全局安装

$ mkdir ~/.npm_global

设置npm的全局prefix

$ npm config set prefix '~/.npm_global'

# 设置之后检查是否设置成功
$ npm config get prefix
$ /usr/tester/.npm_global

添加环境变量

linux 添加环境变量的方法有很多,比如修改.bash_profile 或者修改.bashrc, 在这里我选择了.bashrc文件。

选择自己熟悉的编辑器打开.bashrc文件, 我使用vim编辑器

$ vim ~/bashrc

跳转到文件结尾,在最后一行添加如下语句

export PATH=~/.npm_global/bin:$PATH
export NODE_PATH=~/npm_global/lib/node/modules

NODE_PATH 该环境变量能够确保我们程序中可以从新的位置导入全局包

重新载入.bashrc文件, 让新加入的环境变量立即生效

$ source ~/.bashrc

重新安装npm

使用命令npm list -g --depth 0 查看当前已经安装全局模块 此时应该显示empty,因为我们没有安装任何module。 在新的路径重新安装 npm

$ npm install npm@latest -g

安装结束,查看npm版本信息是否正确

到此,问题解决。