Webpack构建与开发服务启动失败:ERR_OSSL_EVP_UNSUPPORTED错误求助
ERR_OSSL_EVP_UNSUPPORTED错误解决方案
问题场景
使用Node.js v18.12.1,执行npm run build(Webpack 4.44.1构建)或npm run dev(webpack-dev-server启动)时,均抛出以下错误:
Error: error:0308010C:digital envelope routines::unsupported
错误根源是Node.js 18+默认禁用了旧版SSL哈希算法,而Webpack 4及更早版本依赖这些算法。
解决方案
方案1:临时运行命令(快速验证)
Windows(PowerShell)
执行构建或启动命令前添加环境变量:
$env:NODE_OPTIONS="--openssl-legacy-provider" npm run build # 或者启动开发服务 $env:NODE_OPTIONS="--openssl-legacy-provider" npm run dev
Linux/macOS(终端)
NODE_OPTIONS="--openssl-legacy-provider" npm run build # 或者 NODE_OPTIONS="--openssl-legacy-provider" npm run dev
方案2:修改package.json脚本(永久生效)
直接在package.json的scripts字段中加入环境变量,无需每次手动设置:
"scripts": { "build": "NODE_OPTIONS='--openssl-legacy-provider' webpack -p", "dev": "NODE_OPTIONS='--openssl-legacy-provider' webpack-dev-server --open" }
注意:Windows PowerShell中若报错,可将单引号改为双引号:
"scripts": { "build": "set NODE_OPTIONS=\"--openssl-legacy-provider\" && webpack -p", "dev": "set NODE_OPTIONS=\"--openssl-legacy-provider\" && webpack-dev-server --open" }
方案3:升级Webpack到兼容版本(长期方案)
Webpack 5.x已适配Node.js 18+的SSL规则,建议升级:
- 卸载旧版Webpack及相关依赖:
npm uninstall webpack webpack-dev-server
- 安装新版:
npm install webpack@^5 webpack-cli webpack-dev-server@^4 --save-dev
- 调整Webpack配置(若有需要):Webpack 5部分配置项有变更,比如
output.hashFunction默认已支持sha256,无需额外指定。
附:用户提供的关键信息
错误栈片段
node:internal/crypto/hash:71 this[kHandle] = new _Hash(algorithm, xofLen); ^ Error: error:0308010C:digital envelope routines::unsupported at new Hash (node:internal/crypto/hash:71:19) at Object.createHash (node:crypto:133:10) at module.exports (C:\wamp\www\xxxx\node_modules\webpack\lib\util\createHash.js:135:53)
Webpack配置
const path = require("path"); module.exports = { mode: "development", entry: path.resolve(__dirname, "src", "app"), output: { path: path.resolve(__dirname, "dist"), filename: "bundle.js", publicPath: "/", hashFunction: "sha256", }, resolve: { extensions: [".js", ".jsx"], }, devServer: { historyApiFallback: true, }, module: { rules: [ { test: /\.jsx?/, loader: "babel-loader", }, ], }, };
核心依赖版本
- Node.js: v18.12.1
- Webpack: ^4.44.1
- React: ^16.13.1
- MongoDB: ^3.6.1
内容的提问来源于stack exchange,提问作者Niklas
相关产品推荐
相关产品推荐

