如何解决Node.js 18中“Error: error:0308010C:digital envelope routines::unsupported”错误
解决NuxtJS升级Node/ESLint后“不支持哈希函数”启动错误
针对你遇到的问题,以下是几个针对性的排查和解决方向:
1. 临时启用OpenSSL旧兼容模式
高版本Node.js(v17+)默认禁用了MD4等弱哈希算法,部分旧版Nuxt依赖或webpack配置可能仍在使用这些算法。可以通过启动参数临时开启兼容:
- 修改package.json中的启动脚本:
"scripts": { "dev": "node --openssl-legacy-provider node_modules/@nuxt/cli/bin/nuxt.js", "build": "node --openssl-legacy-provider node_modules/@nuxt/cli/bin/nuxt.js build" }
- 直接执行启动命令:
node --openssl-legacy-provider node_modules/@nuxt/cli/bin/nuxt.js
2. 检查Nuxt与Node版本兼容性
确认当前Nuxt版本是否适配你升级后的Node.js版本:
- Nuxt 2.x:建议升级到2.17.x及以上的最新小版本,以获得对Node 18+/20+的更好支持。
- Nuxt 3.x:确保Node版本在v16.11+以上,若仍有问题,尝试升级Nuxt到最新稳定版。
3. 排查nuxt.config.js中的配置问题
检查你的nuxt.config.js是否存在依赖旧哈希算法的配置:
- 查看
build字段下的webpack扩展配置,若手动指定了旧哈希算法,修改为支持的类型:
build: { extend(config) { // 若原有配置为MD4/MD5,替换为sha256等支持的算法 config.output.hashFunction = 'sha256' } }
- 尝试临时禁用第三方插件,排查是否是插件依赖旧加密逻辑导致的问题。
4. 更新依赖并清除缓存
- 删除
node_modules、package-lock.json(或yarn.lock),重新执行npm install(或yarn install)。 - 执行
npx nuxt clean清除Nuxt缓存后,再尝试启动服务。
5. 升级第三方依赖
排查项目中是否存在版本过低的依赖(如老版本webpack、css-loader等),将这些依赖升级到适配当前Node版本的最新稳定版。
内容的提问来源于stack exchange,提问作者Romanric Akam
相关产品推荐
相关产品推荐

