Node v18.14.2下Azure DevOps中React构建失败,设NODE_OPTIONS仍无效
解决方案:Azure DevOps 中 Node.js 构建报
ERR_OSSL_EVP_UNSUPPORTED问题 问题根源
本地使用的set NODE_OPTIONS=--openssl-legacy-provider是 Windows 专属的环境变量设置语法,但 Azure DevOps 的构建代理若为 Linux/macOS 环境,该语法无法生效,导致NODE_OPTIONS未被正确配置,触发 OpenSSL 兼容性错误。
具体修复方案
1. 用跨平台工具统一设置环境变量
修改package.json中的构建命令,借助cross-env实现 Windows、Linux、macOS 环境下的环境变量统一设置:
"build:prod": "cross-env NODE_OPTIONS=--openssl-legacy-provider lingui add-locale en && lingui extract --clean && lingui compile && webpack --mode production"
先安装cross-env依赖:
npm install cross-env --save-dev
2. 在 Azure DevOps 管道中全局配置环境变量
无需修改项目代码,直接在 Azure DevOps YAML 管道中为构建步骤注入环境变量:
steps: - task: NodeTool@0 inputs: versionSpec: '18.14.2' displayName: '安装 Node.js 18.14.2' - script: | npm install npm run build:prod displayName: '安装依赖并执行构建' env: NODE_OPTIONS: '--openssl-legacy-provider'
3. 确认代理的 Node.js 版本
确保 Azure DevOps 构建代理使用的 Node.js 版本与本地一致(v18.14.2),通过NodeTool任务强制指定版本即可避免版本差异问题。
4. 为单个命令单独配置变量
若全局设置无效,可尝试为每个需要的命令单独指定环境变量:
"build:prod": "lingui add-locale en && NODE_OPTIONS=--openssl-legacy-provider lingui extract --clean && NODE_OPTIONS=--openssl-legacy-provider lingui compile && NODE_OPTIONS=--openssl-legacy-provider webpack --mode production"
内容的提问来源于stack exchange,提问作者tRuEsAtM
相关产品推荐
相关产品推荐

