运行npm install时出现‘Failed to remove some directories’错误求因
npm install清理阶段EPERM权限错误排查(Node v20.8.0)
问题描述
运行npm install可正常获取所有npm包,但进入清理阶段时出现如下EPERM权限错误:
3242 timing build:link Completed in 222ms 3243 info run deasync@0.1.28 install node_modules/deasync node ./build.js 3244 info run yorkie@2.0.0 install node_modules/yorkie node bin/install.js 3245 info run yorkie@2.0.0 install { code: 0, signal: null } 3246 timing build:run:install:node_modules/yorkie Completed in 235ms 3247 info run deasync@0.1.28 install { code: 1, signal: null } 3248 warn cleanup Failed to remove some directories [ 3248 warn cleanup [ 3248 warn cleanup 'D:\\Repos\\XX\\frontend\\legacy\\node_modules\\@storybook\\addon-essentials', 3248 warn cleanup [Error: EPERM: operation not permitted, rmdir 'D:\Repos\XX\frontend\legacy\node_modules\@storybook\addon-essentials\node_modules\@storybook\addon-docs\dist\modern'] { 3248 warn cleanup errno: -4048, 3248 warn cleanup code: 'EPERM', 3248 warn cleanup syscall: 'rmdir', 3248 warn cleanup path: 'D:\\Repos\\XX\\frontend\\legacy\\node_modules\\@storybook\\addon-essentials\\node_modules\\@storybook\\addon-docs\\dist\\modern' 3248 warn cleanup } 3248 warn cleanup ], 3248 warn cleanup [ 3248 warn cleanup 'D:\\Repos\\XX\\frontend\\legacy\\node_modules\\@storybook', 3248 warn cleanup [Error: EPERM: operation not permitted, rmdir 'D:\Repos\XX\frontend\legacy\node_modules\@storybook\addon-essentials'] { 3248 warn cleanup errno: -4048, 3248 warn cleanup code: 'EPERM', 3248 warn cleanup syscall: 'rmdir', 3248 warn cleanup path: 'D:\\Repos\\XX\\frontend\\legacy\\node_modules\\@storybook\\addon-essentials' 3248 warn cleanup } 3248 warn cleanup ] 3248 warn cleanup ]
已确认无程序占用目标目录,且尝试以管理员身份运行npm install仍未解决问题,当前使用Node.js v20.8.0。
可能原因
- Windows系统文件锁定:Windows的文件系统缓存、虚拟内存映射或后台进程(如Windows Defender实时扫描)可能隐性锁定了目录,导致npm无法删除,即便没有显式程序占用。
- Node/npm兼容性问题:Node v20.x属于较新版本,部分旧依赖包(如
deasync@0.1.28)未完成适配,其安装失败会导致后续清理流程异常,触发权限错误。 - 嵌套目录权限继承异常:
@storybook/addon-essentials内部嵌套了二级node_modules,Windows下嵌套目录的权限继承规则可能出现异常,导致父目录删除时子目录权限不足。 - npm清理机制时序问题:npm在处理嵌套依赖清理时,可能存在时序漏洞,尝试删除父目录时子目录资源尚未完全释放,进而触发EPERM错误。
解决建议
- 手动清理依赖文件:关闭所有相关终端、IDE后,手动删除
node_modules文件夹和package-lock.json文件,再重新执行npm install。 - 临时禁用杀毒软件扫描:临时关闭Windows Defender实时保护,再运行
npm install,排查是否是杀毒软件锁定了目标文件。 - 降级Node版本:尝试切换到Node v18.x LTS版本,该版本兼容性更成熟,适配大部分旧依赖包。
- 使用npm强制安装参数:运行
npm install --force强制覆盖依赖,或npm install --legacy-peer-deps处理peer依赖冲突,避免因依赖异常引发的清理错误。 - 强制删除锁定目录:用管理员权限打开PowerShell,执行以下命令强制删除锁定目录:
之后重新运行Remove-Item -Path "D:\Repos\XX\frontend\legacy\node_modules\@storybook\addon-essentials" -Recurse -Forcenpm install。
内容的提问来源于stack exchange,提问作者Brum
相关产品推荐
相关产品推荐

