Jenkins执行NX构建报错TypeError: fs.rm is not a function求助
解决Jenkins中NX构建后fs.rm无法识别的问题
问题原因
fs.rm是Node.js 14.14.0及以上版本才支持的API,你的Jenkins服务器上Node.js版本低于这个要求,或者Jenkins环境使用的NX版本和本地不一致(高版本NX可能依赖新Node API),导致构建完成后NX调用该方法时出错。
解决办法
方法1:跳过清理步骤(快速临时解决)
直接在构建命令里添加--no-clean参数,跳过NX构建后的清理操作,这样就不会触发fs.rm的调用:
sh "npx nx affected --base=HEAD~1 --target=build --parallel=3 --verbose --no-clean"
或者也可以在项目的project.json(或workspace.json)里修改build目标的配置,把clean选项设为false:
"targets": { "build": { "executor": "@nrwl/web:webpack", // 你的executor可能不同,按实际情况调整 "options": { "clean": false, // 其他原有配置... } } }
方法2:升级Jenkins的Node.js版本(根本解决)
- 先在Jenkins脚本里检查当前Node版本:
sh "node -v"
- 如果版本低于14.14.0,升级到Node.js LTS版本(比如18.x或20.x)。可以通过Jenkins的NodeJS插件管理多版本Node,给你的构建任务指定符合要求的Node版本。
方法3:统一NX版本
检查Jenkins环境和本地的NX版本是否一致:
# 本地执行 npx nx -v # Jenkins脚本里执行 sh "npx nx -v"
如果版本不一致,建议在项目的package.json里锁定NX的版本,然后Jenkins构建时先执行npm install(或yarn install)安装本地依赖,再执行构建命令,避免npx拉取不兼容的NX版本。
内容的提问来源于stack exchange,提问作者UndisclosedCurtain
相关产品推荐
相关产品推荐

