根本原因是 node_cache 目录权限不足或路径受限,需将其移至用户可写路径(如 C:\Users{用户名}.node-cache),设置 npm config set cache 并赋予完全控制权限,同时确保 VSCode 加载正确配置。

npm install 报 EPERM: operation not permitted, mkdir ‘…\_cacache\tmp\…’
这是 Windows 上最典型的 node_cache 权限卡点:npm 在写缓存临时目录时被系统拦截,错误路径里一定含 _cacache\tmp 或 node_cache_locks。根本不是 VSCode 本身的问题,而是你手动配置的 node_cache 目录权限没放开,或者它落在了 C:\Program Files 这类受保护路径下。
常见诱因:
- 你在
C:\Program Files\nodejs下新建了node_cache文件夹,但没给当前用户写权限 -
npm config set cache指向了一个 NTFS 权限受限的路径(比如带空格、中文、或系统目录) - 杀毒软件或 Windows Defender 正在锁定
_cacache里的临时文件
实操建议:
- 别把
node_cache和node_global放在C:\Program Files或C:\Windows下——直接挪到C:\Users\{用户名}\.node-cache这类用户可写路径 - 执行
npm config set cache "C:\Users\{用户名}\.node-cache"(注意用双引号包裹含空格路径) - 右键该缓存目录 → 属性 → 安全 → 编辑 → 勾选当前用户的“完全控制”和“修改”权限
- 删掉旧缓存目录里所有内容(尤其是
_cacache子目录),再试npm install
VSCode 终端里 npm install 成功,但创建 uniapp 项目仍报 EPERM
uni-app CLI 启动时会调用 npm 再次写缓存,哪怕全局安装成功,它也可能用另一套路径去访问 node_cache。这时候 VSCode 终端看似正常,但实际运行的是不同上下文的 node 进程。
关键检查点:
详细的 Three.js 3D 图形参考,涵盖场景设置、相机、几何体、材质、光照、动画、控制器、加载器、数学工具和调试。
- 在 VSCode 终端里运行
npm config get cache,确认输出路径和你手动设置的一致 - 对比系统 CMD 里执行同一命令的结果——如果两者不一致,说明 VSCode 没加载你的
.npmrc或环境变量 - 检查
~/.npmrc(Windows 是%USERPROFILE%\.npmrc)是否被多个配置源覆盖(比如项目根目录下也有 .npmrc)
实操建议:
- 在 VSCode 终端里手动执行
npm config list,看cache那一行是否来自user级别而非global或project - 删掉项目根目录下的
.npmrc(如果存在),避免局部配置干扰全局行为 - 重启 VSCode,确保新配置生效;不要只关终端窗口
macOS / Linux 下出现类似 EPERM,但路径是 /usr/local/lib/node_modules
这不是 node_cache 的问题,而是 npm 默认全局路径权限失控。错误信息里会出现 EACCES 和 /usr/local/lib/node_modules,和 Windows 的 EPERM 表象不同、根源一致:当前用户无权写目标目录。
实操建议:
- 立刻停用
sudo npm install -g—— 它会让后续npm update、yarn全部失败 - 执行
npm config set prefix ~/.local,把全局模块装进用户目录 - 编辑
~/.zshrc(macOS Catalina+)或~/.bashrc(旧版),追加export PATH=~/.local/bin:$PATH - 运行
source ~/.zshrc,再验证which npm和which node是否指向同一套环境
为什么改了 cache 路径,npm install 还是卡在 tmp 目录?
因为 npm 的缓存锁机制(_cacache)对路径编码和父目录权限极其敏感。哪怕你设了新 cache 路径,只要其父目录(比如 C:\Users\张三)含中文,或路径中任意一级有空格/特殊字符,tmp 子目录创建就会失败。
最容易被忽略的细节:
-
npm config set cache设置的路径必须是纯英文、无空格、无中文字符的绝对路径 - 不要用
~符号(Windows 不识别),写完整路径如C:\Users\username\.npm-cache - 如果用了 nvm 或 fnm,确保
npm和node是同一版本管理器启动的,否则cache配置可能被忽略 - VSCode 启动方式影响环境加载:从桌面图标启动可能不读
.zshrc,建议从终端执行code .打开项目

















