Azure Pipeline中ng test命令执行失败问题排查
解决Azure Pipeline中npm缓存tmp目录ENOTEMPTY错误
这个错误并非源自项目内的node_modules或package_lock.json,而是npm全局缓存的临时目录存在残留文件或被占用导致的,以下是针对性解决办法:
强制清理npm全局缓存
在Pipeline任务中添加命令,直接清理npm缓存的临时目录:npm cache clean --force若使用Windows自托管代理,也可通过PowerShell手动删除目标目录:
Remove-Item -Recurse -Force "C:\Users\DevOps-AgentPools-sr\AppData\Roaming\npm-cache\_cacache\tmp" -ErrorAction SilentlyContinue开启Pipeline工作区全量清理
在YAML配置的作业级别开启工作区清理,确保每次运行前代理机器的残留文件被彻底清除:jobs: - job: BuildJob workspace: clean: all # 清理代理上所有工作区内容,包括缓存类文件跳过npm缓存执行安装
在npm install命令中添加参数,避免使用全局缓存,或指定项目内的临时缓存目录:# 完全跳过缓存 npm install --no-cache # 指定项目内临时缓存目录,后续随工作区清理一同删除 npm install --cache ./.npm-tmp-cache终止占用缓存的进程
若为自托管代理,可能存在未正常退出的npm进程锁定了缓存目录,可先终止相关进程再执行清理:Get-Process -Name npm -ErrorAction SilentlyContinue | Stop-Process -Force
内容的提问来源于stack exchange,提问作者Rajesh
相关产品推荐
相关产品推荐

