运行npm run watch时出现ERR_OSSL_EVP_UNSUPPORTED错误求助
Electron-React模板运行
npm run watch时出现ERR_OSSL_EVP_UNSUPPORTED错误 我正在进行基于Electron的软件后端开发,为便捷处理Python程序的数据插入及窗口刷新,计划集成React JS库。使用electron-react-boilerplate代码模板测试时,运行npm run watch命令出现错误,错误日志如下:
> electron-react-app@1.0.0 watch > webpack --config webpack.common.js --watch webpack is watching the files… 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:\Users\cantr\Desktop\Stage ingénieur KOMILFO SPORT\Sail Vision\electron-react-boilerplate-master\node_modules\webpack\lib\util\createHash.js:135:53) at NormalModule._initBuildHash (C:\Users\cantr\Desktop\Stage ingénieur KOMILFO SPORT\Sail Vision\electron-react-boilerplate-master\node_modules\webpack\lib\NormalModule.js:417:16) at handleParseError (C:\Users\cantr\Desktop\Stage ingénieur KOMILFO SPORT\Sail Vision\electron-react-boilerplate-master\node_modules\webpack\lib\NormalModule.js:471:10) at C:\Users\cantr\Desktop\Stage ingénieur KOMILFO SPORT\Sail Vision\electron-react-boilerplate-master\node_modules\webpack\lib\NormalModule.js:503:5 at C:\Users\cantr\Desktop\Stage ingénieur KOMILFO SPORT\Sail Vision\electron-react-boilerplate-master\node_modules\webpack\lib\NormalModule.js:358:12 at C:\Users\cantr\Desktop\Stage ingénieur KOMILFO SPORT\Sail Vision\electron-react-boilerplate-master\node_modules\loader-runner\lib\LoaderRunner.js:373:3 at iterateNormalLoaders (C:\Users\cantr\Desktop\Stage ingénieur KOMILFO SPORT\Sail Vision\electron-react-boilerplate-master\node_modules\loader-runner\lib\LoaderRunner.js:214:10) at iterateNormalLoaders (C:\Users\cantr\Desktop\Stage ingénieur KOMILFO SPORT\Sail Vision\electron-react-boilerplate-master\node_modules\loader-runner\lib\LoaderRunner.js:221:10) at C:\Users\cantr\Desktop\Stage ingénieur KOMILFO SPORT\Sail Vision\electron-react-boilerplate-master\node_modules\loader-runner\lib\LoaderRunner.js:236:3 at context.callback (C:\Users\cantr\Desktop\Stage ingénieur KOMILFO SPORT\Sail Vision\electron-react-boilerplate-master\node_modules\loader-runner\lib\LoaderRunner.js:111:13) at C:\Users\cantr\Desktop\Stage ingénieur KOMILFO SPORT\Sail Vision\electron-react-boilerplate-master\node_modules\babel-loader\lib\index.js:44:71 { opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ], library: 'digital envelope routines', reason: 'unsupported', code: 'ERR_OSSL_EVP_UNSUPPORTED' } Node.js v18.12.0
解决方案
这个错误是Node.js 17及以上版本默认使用的OpenSSL 3.0不兼容旧版Webpack依赖的哈希算法导致的,可通过以下几种方式解决:
临时运行指定环境变量
根据你的终端类型执行对应命令:- Windows CMD:
set NODE_OPTIONS=--openssl-legacy-provider && npm run watch - Windows PowerShell:
$env:NODE_OPTIONS="--openssl-legacy-provider"; npm run watch - Linux/macOS:
NODE_OPTIONS=--openssl-legacy-provider npm run watch
- Windows CMD:
修改package.json的脚本配置
直接在package.json里的watch命令前添加环境变量,避免每次手动输入:- 若仅在Windows环境使用,修改scripts字段:
"scripts": { "watch": "set NODE_OPTIONS=--openssl-legacy-provider && webpack --config webpack.common.js --watch" } - 如需跨平台兼容,先安装cross-env依赖:
再修改scripts:npm install cross-env --save-dev"scripts": { "watch": "cross-env NODE_OPTIONS=--openssl-legacy-provider webpack --config webpack.common.js --watch" }
- 若仅在Windows环境使用,修改scripts字段:
降级Node.js版本
若不想修改配置,可将Node.js降级到16.x LTS版本,该版本使用的OpenSSL 1.1.1不会出现此兼容性问题。
内容的提问来源于stack exchange,提问作者Feyto
相关产品推荐
相关产品推荐

