You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行npm run dev时遇new _Hash相关ERR_OSSL_EVP_UNSUPPORTED错误求助

解决Nuxt v2.15.8启动时出现的ERR_OSSL_EVP_UNSUPPORTED错误

错误原因

Node.js 17及以上版本默认采用OpenSSL 3.0,启用了更严格的算法要求,而Nuxt v2.15.8依赖的Webpack 4.x版本不支持这些新算法,导致构建时哈希创建失败,抛出error:0308010C:digital envelope routines::unsupported错误。

解决方案

1. 临时指定环境变量启动

根据操作系统不同,执行对应命令:

  • Windows(命令提示符cmd):
    set NODE_OPTIONS=--openssl-legacy-provider && npm run dev
    
  • Windows(PowerShell):
    $env:NODE_OPTIONS="--openssl-legacy-provider"; npm run dev
    
  • macOS/Linux:
    NODE_OPTIONS=--openssl-legacy-provider npm run dev
    

2. 修改package.json的启动脚本

修改package.json中的scripts字段,把环境变量固定到命令里,避免每次手动输入:

{
  "scripts": {
    "dev": "NODE_OPTIONS=--openssl-legacy-provider nuxt",
    "build": "NODE_OPTIONS=--openssl-legacy-provider nuxt build",
    "start": "NODE_OPTIONS=--openssl-legacy-provider nuxt start"
  }
}

Windows用户若使用cmd,需调整为:

{
  "scripts": {
    "dev": "set NODE_OPTIONS=--openssl-legacy-provider && nuxt",
    "build": "set NODE_OPTIONS=--openssl-legacy-provider && nuxt build",
    "start": "set NODE_OPTIONS=--openssl-legacy-provider && nuxt start"
  }
}

3. 降级Node.js版本

如果不想修改环境变量,可以将Node.js降级到16.x或更低的LTS版本,推荐使用nvm(Node版本管理器)进行版本切换:

  • 安装nvm后,执行以下命令安装并切换到16.x版本:
    nvm install 16
    nvm use 16
    

错误日志参考

╭───────────────────────────────────────╮
   │                                       │
   │   Nuxt @ v2.15.8                      │
   │                                       │
   │   ▸ 环境:开发环境                    │
   │   ▸ 渲染模式:服务端渲染              │
   │   ▸ 目标:服务器                      │
   │                                       │
   │   监听地址:http://localhost:3000/   │
   │                                       │
   ╰───────────────────────────────────────╯

i 为开发环境准备项目                                           17:35:26
i 初始构建可能需要一段时间                                      17:35:26
i 发现组件:.nuxt/components/readme.md                           17:35:26
√ 构建器初始化完成                                                         17:35:26
√ Nuxt文件生成完成                                                        17:35:26

* 客户端 █████████████████████████ 构建中(10%)1/2个模块 1个活跃
 node_modules\webpack-hot-middleware\client.js

* 服务端 █████████████████████████ 构建中(10%)1/1个模块 0个活跃


node:internal/crypto/hash:71
  this[kHandle] = new _Hash(algorithm, xofLen);
                  ^

错误: 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 (F:\1.A software Company careers test\CyberElysium\test\todo-nuxt\node_modules\webpack\lib\util\createHash.js:135:53)
    at NormalModule._initBuildHash (F:\1.A software Company careers test\CyberElysium\test\todo-nuxt\node_modules\webpack\lib\NormalModule.js:417:16)
    at handleParseError (F:\1.A software Company careers test\CyberElysium\test\todo-nuxt\node_modules\webpack\lib\NormalModule.js:471:10)
    at F:\1.A software Company careers test\CyberElysium\test\todo-nuxt\node_modules\webpack\lib\NormalModule.js:503:5
    at F:\1.A software Company careers test\CyberElysium\test\todo-nuxt\node_modules\webpack\lib\NormalModule.js:358:12
    at F:\1.A software Company careers test\CyberElysium\test\todo-nuxt\node_modules\web    at iterateNormalLoaders (F:\1.A software Company careers test\CyberElysium\test\todo-nuxt\node_modules\webpack\node_modules\loader-runner\lib\LoaderRunner.js:214:10)       
    at Array.<anonymous> (F:\1.A software Company careers test\CyberElysium\test\todo-nuxt\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'
}

内容的提问来源于stack exchange,提问作者Noor Muhammed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 09:33:16