Azure DevOps构建ADF ARM模板时npm build报ELIFECYCLE错误如何解决
问题背景
我们当前使用Azure DevOps pipeline构建Azure Data Factory(ADF)ARM模板,操作流程严格遵循微软官方发布的Azure Data Factory持续集成/持续交付改进文档指引。
构建前需按如下配置安装对应npm依赖包:
{ "scripts":{ "build":"node node_modules/@microsoft/azure-data-factory-utilities/lib/index" }, "dependencies":{ "@microsoft/azure-data-factory-utilities":"^0.1.5" } }
该构建流程此前长期运行正常,自上周起npm包的build脚本执行突然抛出异常,错误日志如下:
2022-06-17T04:43:36.0199947Z 17 verbose argv "C:\\hostedtoolcache\\windows\\node\\10.24.1\\x64\\node.exe" "C:\\hostedtoolcache\\windows\\node\\10.24.1\\x64\\node_modules\\npm\\bin\\npm-cli.js" "run" "build" "validate" "D:\\a\\1\\s/datafactory" "/subscriptions/****/resourceGroups/****/providers/Microsoft.DataFactory/factories/***" 2022-06-17T04:43:36.0200926Z 18 verbose node v10.24.1 2022-06-17T04:43:36.0201275Z 19 verbose npm v6.14.12 2022-06-17T04:43:36.0201637Z 20 error code ELIFECYCLE 2022-06-17T04:43:36.0201982Z 21 error errno 1 2022-06-17T04:43:36.0202813Z 22 error @ build: `node node_modules/@microsoft/azure-data-factory-utilities/lib/index "validate" "D:\a\1\s/datafactory" "/subscriptions/***/resourceGroups/***/providers/Microsoft.DataFactory/factories/***"` 2022-06-17T04:43:36.0203638Z 22 error Exit status 1 2022-06-17T04:43:36.0204001Z 23 error Failed at the @ build script. 2022-06-17T04:43:36.0204500Z 23 error This is probably not a problem with npm. There is likely additional logging output above. 2022-06-17T04:43:36.0204983Z 24 verbose exit [ 1, true ] 2022-06-17T04:43:36.0205199Z 2022-06-17T04:43:36.0272225Z ##[error]Error: Npm failed with return code: 1 2022-06-17T04:43:36.0335788Z ##[section]Finishing: Validate
根因定位
从日志可确认当前pipeline运行环境使用的Node.js版本为v10.24.1,@microsoft/azure-data-factory-utilities包近期发布的0.1.x小版本已停止对Node.js 10.x版本的兼容支持,而package.json中配置的^0.1.5版本范围会自动拉取符合语义化版本规则的最新小版本,因此原本正常运行的流程会在包侧更新后无改动突发报错。
可行修复方案
按优先级依次尝试以下操作:
- 升级Azure DevOps pipeline中构建任务使用的Node.js版本至14.x及以上长期支持版本,这是该npm包官方明确的兼容运行版本,升级后重新执行构建即可恢复正常
- 若受环境限制暂时无法升级Node.js版本,将
package.json中@microsoft/azure-data-factory-utilities的版本号从^0.1.5修改为固定版本0.1.5,锁定依赖版本后重新执行npm install安装依赖再运行构建,避免自动拉取不兼容的高版本包 - 若上述操作后仍报错,在执行build命令前新增
npm cache clean --force步骤,清理本地缓存的损坏依赖包文件后重新安装依赖再构建
补充说明:如果升级Node.js版本后出现文件权限类报错,给pipeline构建服务账号开放ADF代码目录的读写权限即可解决。
内容的提问来源于stack exchange,提问作者Nihar KN
相关产品推荐
相关产品推荐

