如何在Webpack脚本中设置NODE_OPTIONS=--openssl-legacy-provider?
解决Webpack构建的ERR_OSSL_EVP_UNSUPPORTED错误并集成NODE_OPTIONS到脚本
这个错误是Node.js v17及以上版本默认启用了新的OpenSSL加密算法套件,导致Webpack等老版本工具出现兼容性问题。要把NODE_OPTIONS=--openssl-legacy-provider集成到构建脚本里,有两种常用方式:
方式一:直接前置环境变量(类Unix系统适用)
修改package.json中的buildProd脚本,将环境变量配置直接放在webpack命令前:
"buildProd": "NODE_OPTIONS=--openssl-legacy-provider webpack --config webpack.config.js --mode=production --display-error-details"
这种写法在Linux、macOS以及类Unix的CI环境(如GitHub Actions、GitLab CI)中可以直接生效。
方式二:跨平台兼容方案(支持Windows/类Unix)
如果CI环境可能涉及Windows系统,推荐使用cross-env包统一环境变量设置方式:
- 先安装依赖:
npm install cross-env --save-dev
- 修改package.json脚本:
"buildProd": "cross-env NODE_OPTIONS=--openssl-legacy-provider webpack --config webpack.config.js --mode=production --display-error-details"
另外,部分CI平台支持单独配置环境变量(比如在CI配置文件中设置variables或env字段),也可以直接在CI配置里添加NODE_OPTIONS=--openssl-legacy-provider,无需修改package.json脚本,这种方式更适合多项目统一配置的场景。
内容的提问来源于stack exchange,提问作者kkkkkkkkkkkkkkkkk
相关产品推荐
相关产品推荐

