Apache Superset创建自定义插件执行npm install -g yo权限报错如何解决
问题原因
该错误是Node.js全局包权限不匹配导致的,触发原因分为两种:
- 执行
npm install -g yo时使用了sudo运行命令,全局安装的yo工具归属root用户,后续用普通用户身份调用yo时,没有权限读取root用户家目录下的/root/.config/insight-nodejs/insight-yo.json配置文件 - 未使用sudo执行安装命令时,当前普通用户没有npm默认全局包安装目录的写入权限,写入系统级路径被操作系统拒绝
解决方案
推荐使用修改npm全局安装路径的方案,从根源避免权限问题:
- 方案1:修改npm全局安装路径(无sudo依赖,无权限隐患)
- 创建用户专属的npm全局包存储目录:
mkdir -p ~/.npm-global - 配置npm使用该目录作为全局安装根路径:
npm config set prefix '~/.npm-global' - 将该目录下的可执行文件路径加入系统环境变量,编辑你当前使用的shell配置文件(
~/.bashrc对应bash,~/.zshrc对应zsh),添加如下内容:
export PATH=~/.npm-global/bin:$PATH- 刷新环境变量使其生效:
source ~/.bashrc(zsh用户替换为source ~/.zshrc) - 重新执行安装命令即可:
npm install -g yo
- 创建用户专属的npm全局包存储目录:
- 方案2:临时解决(不推荐,易遗留权限风险)
安装时额外添加权限参数:sudo npm install -g yo --unsafe-perm=true --allow-root
内容的提问来源于stack exchange,提问作者Rohan Taufique
相关产品推荐
相关产品推荐

