Nuxt2与Node.js v18 LTS兼容问题:npm run dev报错求助
Nuxt项目npm run dev报错ERR_OSSL_EVP_UNSUPPORTED的解决方法
问题情况
我是Vue.js新手,这是第一个Nuxt项目。执行npm install安装依赖后,用CMD运行npm run dev时出现以下错误:
* Client █████████████████████████ building (10%) 1/2 modules 1 active node_modules\webpack-hot-middleware\client.js * Server █████████████████████████ building (10%) 1/1 modules 0 active node:internal/crypto/hash:71 this[kHandle] = new _Hash(algorithm, xofLen); ^ttp://localhost:3000/ │ │ │ Error: error:0308010C:digital envelope routines::unsupported at new Hash (node:internal/crypto/hash:71:19) at Object.createHash (node:crypto:133:10) 07:49:12 at module.exports (C:\Users\a\revampkiriminaja\kiriminaja\node_modules\webpack\lib\util\createHash.js:135:53) 07:49:12 at NormalModule._initBuildHash (C:\Users\a\revampkiriminaja\kiriminaja\node_modules\webpack\lib\NormalModule.js:417:16) at handleParseError (C:\Users\a\revampkiriminaja\kiriminaja\node_modules\webpack\lib\NormalModule.js:471:10) at C:\Users\a\revampkiriminaja\kiriminaja\node_modules\webpack\lib\NormalModule.js:503:5 at C:\Users\a\revampkiriminaja\kiriminaja\node_modules\webpack\lib\NormalModule.js:358:12 at C:\Users\a\revampkiriminaja\kiriminaja\node_modules\webpack\node_modules\loader-runner\lib\LoaderRunner.js:373:3 at iterateNormalLoaders (C:\Users\a\revampkiriminaja\kiriminaja\node_modules\webpack\node_modules\loader-runner\lib\LoaderRunner.js:214:10) at Array.<anonymous> (C:\Users\a\revampkiriminaja\kiriminaja\node_modules\webpack\node_modules\loader-runner\lib\LoaderRunner.js:205:4) { opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ], library: 'digital envelope routines', reason: 'unsupported', code: 'ERR_OSSL_EVP_UNSUPPORTED' }
备注:npm run serve可以正常启动并访问localhost:3000。
解决方法
这个错误是Node.js v17及以上版本默认启用了新的OpenSSL算法,而项目依赖的旧版Webpack不兼容导致的,以下是几种可行的解决方式:
1. 临时运行时添加环境变量
根据操作系统选择对应命令:
- Windows CMD:
set NODE_OPTIONS=--openssl-legacy-provider && npm run dev - Windows PowerShell:
$env:NODE_OPTIONS="--openssl-legacy-provider"; npm run dev - Linux/macOS:
NODE_OPTIONS=--openssl-legacy-provider npm run dev
2. 修改package.json永久配置
修改项目根目录的package.json,找到scripts里的dev命令:
- Linux/macOS直接修改:
"scripts": { "dev": "NODE_OPTIONS=--openssl-legacy-provider nuxt" } - Windows需先安装跨平台环境变量工具:
再修改脚本:npm install cross-env --save-dev
之后直接运行"scripts": { "dev": "cross-env NODE_OPTIONS=--openssl-legacy-provider nuxt" }npm run dev即可。
3. 降级Node.js版本
如果不想修改配置,可以将Node.js版本降级到v16或更低,推荐用nvm(Node版本管理器)切换版本,避免影响其他项目。
内容的提问来源于stack exchange,提问作者adityaharist
相关产品推荐
相关产品推荐

