执行npm install时uglify-js文件夹被清空导致安装失败排查求助
偶发npm EISDIR错误排查方向
版本兼容性排查
- 你使用的npm v2.15.12是2016年发布的老旧版本,与node v10.24.1存在已知的软链接处理兼容性缺陷:
addLocal步骤对跨目录软链接的路径判定逻辑存在bug,偶发会将软链接指向的源目录误判为需要覆盖的临时目录,执行清空操作。
排查操作:修改maven npm插件的执行命令为npm install --loglevel silly,输出全量执行日志,定位addLocal步骤触发时的目录判定参数。
执行时序冲突排查
mvn clean会清空整个target目录,npm插件重建target/node/node_modules/uglify-js软链接的过程,可能与后续npm install的依赖校验步骤并发执行:软链接未完全挂载完成时,addLocal就尝试读取路径,误判为普通空目录后触发源目录重建清空。
排查操作:在maven配置中,将软链接创建和npm install拆分为两个独立的执行阶段,或者在npm install前添加1~2秒的延迟,验证问题是否复现。
权限与锁冲突排查
~/front-end/uglify-js/目录如果存在残留的npm临时锁文件,或者当前执行用户对该目录的写入权限出现波动(如域权限定时刷新、杀毒软件临时锁定目录),npm v2会无法正确读取package.json,触发目录重建逻辑。
排查操作:在npm install执行前添加前置脚本,打印~/front-end/uglify-js/的文件列表、权限属性、是否存在临时锁文件,将日志持久化到本地,对比正常执行与异常执行的日志差异。
临时规避方案
若暂时无法定位根因,可将uglify-js的三个基准文件备份到项目固定目录,在maven npm插件执行前添加预执行脚本,自动恢复~/front-end/uglify-js/的文件内容,替代手动恢复操作。
内容的提问来源于stack exchange,提问作者Marc Le Bihan
相关产品推荐
相关产品推荐

