Windows下以管理员身份运行npm全局安装及corepack enable仍报EPERM错误
解决Windows下npm全局安装@nestjs/cli和corepack enable的EPERM权限错误
问题描述
在Windows系统中执行npm i -g @nestjs/cli或corepack enable时,持续触发EPERM权限错误:无法删除部分目录,也无法打开C:\Program Files\nodejs\nest.ps1文件。已尝试以管理员身份运行CMD/PowerShell、关闭杀毒软件、重启电脑、重新安装Node.js,但问题仍未解决。具体错误日志如下:
C:\Windows\System32>npm i -g @nestjs/cli npm WARN deprecated inflight@1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. npm WARN deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported npm WARN cleanup Failed to remove some directories [ npm WARN cleanup [ npm WARN cleanup 'C:\Program Files\nodejs\node_modules\@nestjs\cli', npm WARN cleanup [Error: EPERM: operation not permitted, rmdir 'C:\Program Files\nodejs\node_modules\@nestjs\cli\node_modules\typescript\lib'] { npm WARN cleanup errno: -4048, npm WARN cleanup code: 'EPERM', npm WARN cleanup syscall: 'rmdir', npm WARN cleanup path: 'C:\Program Files\nodejs\node_modules\@nestjs\cli\node_modules\typescript\lib' npm WARN cleanup } npm WARN cleanup ], npm WARN cleanup [ npm WARN cleanup 'C:\Program Files\nodejs\node_modules\@nestjs\cli', npm WARN cleanup [Error: EPERM: operation not permitted, rmdir 'C:\Program Files\nodejs\node_modules\@nestjs\cli\node_modules\rxjs\dist\esm5\internal'] { npm WARN cleanup errno: -4048, npm WARN cleanup code: 'EPERM', npm WARN cleanup syscall: 'rmdir', npm WARN cleanup path: 'C:\Program Files\nodejs\node_modules\@nestjs\cli\node_modules\rxjs\dist\esm5\internal' npm WARN cleanup } npm WARN cleanup ] npm WARN cleanup ] npm ERR! code EPERM npm ERR! syscall open npm ERR! path C:\Program Files\nodejs\nest.ps1 npm ERR! errno -4048 npm ERR! Error: EPERM: operation not permitted, open 'C:\Program Files\nodejs\nest.ps1' npm ERR! at async open (node:internal/fs/promises:638:25) npm ERR! at async writeFile (node:internal/fs/promises:1221:14) npm ERR! at async Promise.all (index 0) npm ERR! at async Promise.all (index 0) npm ERR! at async Promise.all (index 0) npm ERR! at async #createBinLinks (C:\Program Files\nodejs\node_modules\npm\node_modules\@npmcli\arborist\lib\arborist\rebuild.js:398:5) npm ERR! at async Promise.allSettled (index 0) npm ERR! at async #linkAllBins (C:\Program Files\nodejs\node_modules\npm\node_modules\@npmcli\arborist\lib\arborist\rebuild.js:379:5) npm ERR! at async #build (C:\Program Files\nodejs\node_modules\npm\node_modules\@npmcli\arborist\lib\arborist\rebuild.js:163:7) npm ERR! at async Arborist.rebuild (C:\Program Files\nodejs\node_modules\npm\node_modules\@npmcli\arborist\lib\arborist\rebuild.js:65:5) npm ERR! Error: EPERM: operation not permitted, open 'C:\Program Files\nodejs\nest.ps1' npm ERR! at async open (node:internal/fs/promises:638:25) npm ERR! at async writeFile (node:internal/fs/promises:1221:14) npm ERR! at async Promise.all (index 0) npm ERR! at async Promise.all (index 0) npm ERR! at async Promise.all (index 0) npm ERR! at async #createBinLinks (C:\Program Files\nodejs\node_modules\npm\node_modules\@npmcli\arborist\lib\arborist\rebuild.js:398:5) npm ERR! at async Promise.allSettled (index 0) npm ERR! at async #linkAllBins (C:\Program Files\nodejs\node_modules\npm\node_modules\@npmcli\arborist\lib\arborist\rebuild.js:379:5) npm ERR! at async #build (C:\Program Files\nodejs\node_modules\npm\node_modules\@npmcli\arborist\lib\arborist\rebuild.js:163:7) npm ERR! at async Arborist.rebuild (C:\Program Files\nodejs\node_modules\npm\node_modules\@npmcli\arborist\lib\arborist\rebuild.js:65:5) { npm ERR! errno: -4048, npm ERR! code: 'EPERM', npm ERR! syscall: 'open', npm ERR! path: 'C:\Program Files\nodejs\nest.ps1' npm ERR! } npm ERR! npm ERR! The operation was rejected by your operating system. npm ERR! It's possible that the file was already in use (by a text editor or antivirus), npm ERR! or that you lack permissions to access it. npm ERR! npm ERR! If you believe this might be a permissions issue, please double-check the npm ERR! permissions of the file and its containing directories, or try running npm ERR! the command again as root/Administrator.
解决方案
1. 迁移npm全局安装目录到用户文件夹
默认全局目录在系统盘C:\Program Files\nodejs,权限限制严格,手动转移到用户目录可规避问题:
- 管理员模式打开PowerShell,创建新全局目录:
mkdir ~/.npm-global - 配置npm使用新目录:
npm config set prefix '~/.npm-global' - 添加新目录到系统环境变量
PATH:- 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」
- 在用户变量中编辑
PATH,添加C:\Users\[你的用户名]\.npm-global(替换成实际用户名) - 重启终端后重新执行安装命令
2. 手动清理残留文件后重装
- 手动删除
C:\Program Files\nodejs\node_modules\@nestjs目录和C:\Program Files\nodejs\nest.ps1文件(若删除提示占用,打开任务管理器结束所有node.exe、npm.exe进程再试) - 彻底清理npm缓存:
npm cache clean --force - 重新执行安装命令:
npm i -g @nestjs/cli
3. 调整Node.js目录权限
- 右键
C:\Program Files\nodejs文件夹→「属性」→「安全」→「编辑」 - 选中当前登录用户,勾选「完全控制」权限,点击「应用」→「确定」
- 重启终端后重试命令
4. 临时调整PowerShell执行策略
针对nest.ps1无法打开的问题,临时放宽执行策略:
- 管理员模式打开PowerShell,执行:
Set-ExecutionPolicy Bypass -Scope Process - 安装完成后建议恢复默认策略:
Set-ExecutionPolicy Restricted -Scope Process
5. 修复corepack权限问题
执行corepack enable报错时,可尝试:
- 指定corepack安装目录到用户文件夹:
corepack enable --install-directory ~/.npm-global - 或先卸载再重装corepack:
npm uninstall -g corepack npm install -g corepack corepack enable
内容的提问来源于stack exchange,提问作者GGomesBRA
相关产品推荐
相关产品推荐

