当前位置: 首页 > news >正文

解决 npm intasll 安装报错 Error: EPERM: operation not permitted

Node.js安装及环境配置完成之后 npm install express -g 安装全局的模块报错提示没有权限operation not permitted mkdir 错误编号4048:

其原因是当前用户操作该目录权限不足,当以管理员身份运行cmd,再执行npm install express -g 是不会报权限不足的错误的。 

解决办法有三种方法:
方法一:重新配置环境变量 将npm安装的全局模块所在的路径,以及缓存cache的路径放在其他目录中别放Node.js的默认安装目录(“C:\Program Files\nodejs”)中。

具体操作如下:

1、选择其他盘符如D盘或者是E盘目录下创建NodeDevelop文件夹,再在【NodeDevelop】下分别创建【node_cache】和【node_global】两个文件夹用于对应全模块所在路径和缓存路径。例如我创建的两个文件夹实在【D:\Program Files\NodeDevelop】目录下如下图所示:

 2、创建完两个空文件夹【node_cache】和【node_global】之后,打开cmd命令窗口,输入如下命令,如图所示

npm config set prefix "D:\Program Files\NodeDevelop\node_global"
npm config set cache "D:\Program Files\NodeDevelop\node_cache"

npm config set prefix "D:\Program Files\NodeDevelop\node_global"npm config set cache "D:\Program Files\NodeDevelop\node_cache"

3、接下来设置环境变量,关闭cmd窗口,“我的电脑”-右键-“属性”-“高级系统设置”-“环境变量”

4、进入环境变量对话框,在【系统变量】下新建【NODE_PATH】,输入【D:\Program Files\NodeDevelop\node_global\node_modules】,将【用户变量】下的【Path】修改为【D:\Program Files\NodeDevelop\node_global】 ;注意如果【node_global】文件夹下没有【node_modules】新建一个文件夹命名为node_modules即可。

 5、重新配置完成环境变量之后关闭配置,打开打开cmd窗口,输入如下命令进行模块的全局安装,测试一下即可。

npm install express -g    # -g是全局安装的意思

方法二:删除.npmrc文件

如果安装Node.js时使用的是默认安装路径(“C:\Program Files\nodejs”)安装完成之后会在C盘的目录下生成一.npmrc文件文件,该文件在:C:\Users{账户}\下的.npmrc文件。一般这种类型的文件都是默认被隐藏,Window10查看隐藏文件的方法如下:

 查找.npmrc文件的方法:

删除后测试一下即可。

方法三:更改默认安装路径【C:\Program Files\nodejs】下,我们自己创建的【node_cache】和【node_global】两个文件夹的操作权限,具体操作如下所示:

选择【node_cache】点击鼠标右键选择属性,打开其属性对话框,切换到”安全“项,点击编辑按钮,打开【node_cache】的权限对话框,选中Users将Users的权限下的“完全控制”和“修改”两项勾选上(默认是不勾选的),点击确定即可。

 【node_global】的操作权限参照【node_cache】修改一下即可。修改完成之后打开cmd窗口,进行测试。

还有一种最简单直接的办法就是:将安装在默认路径【C:\Program Files\nodejs】下的Node.js卸载掉重新安装,重新安装Node.js时将默认的安装路径目录【C:\Program Files\nodejs】修改成其他的安装目录如【D:\Program Files\nodejs】安装完成之后,再在【D:\Program Files\nodejs】下创建完两个空文件夹【node_cache】和【node_global】然后进行环境变量的配置。

本次分享到此结束,感谢大家的阅读!

相关文章:

  • 【分布式系统五】监控平台Zabbix实际监控运用(命令+截图详细版)
  • sql业务场景分析思路参考
  • 免费的二级域名分发,您确定不要试试吗?
  • 嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
  • 量化交易对长期投资的影响
  • 【matlab】回归预测——智能优化算法支持向量机
  • Java中继承接口和实现接口的区别、接口和抽象类的区别、并理解关键字interface、implements
  • centos7.9 python3环境(virtualenv)搭建及所遇错误
  • 2024年洗地机哪个牌子好?内行人最建议这4个:清洁力口碑公认都不错
  • 【MySQL】事务实现原理
  • Pip换源,以及python解耦方法实现
  • Linux/Ubuntu访问局域网共享文件夹
  • 面向物联网行业的异常监控追踪技术解决方案:技术革新与运维保障
  • 【C语言】C语言 4 个编译过程详解
  • 一站式采购!麒麟信安CentOS安全加固套件上架华为云云商店
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • ESLint简单操作
  • es的写入过程
  • Java 多线程编程之:notify 和 wait 用法
  • Javascript设计模式学习之Observer(观察者)模式
  • Magento 1.x 中文订单打印乱码
  • MySQL的数据类型
  • Octave 入门
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • PHP的Ev教程三(Periodic watcher)
  • Unix命令
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • 跨域
  • 如何胜任知名企业的商业数据分析师?
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • 3月7日云栖精选夜读 | RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势 ...
  • zabbix3.2监控linux磁盘IO
  • 关于Android全面屏虚拟导航栏的适配总结
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • #13 yum、编译安装与sed命令的使用
  • #pragma once与条件编译
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (3)nginx 配置(nginx.conf)
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (Oracle)SQL优化技巧(一):分页查询
  • (编译到47%失败)to be deleted
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (含笔试题)深度解析数据在内存中的存储
  • (离散数学)逻辑连接词
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (图)IntelliTrace Tools 跟踪云端程序
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • (原創) 未来三学期想要修的课 (日記)
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • (转)linux下的时间函数使用
  • ***原理与防范
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端
  • .NET 漏洞分析 | 某ERP系统存在SQL注入