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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 23:20:43