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

Node.js项目执行npm run start报ERR_OSSL_EVP_UNSUPPORTED错误求助

解决Node.js执行npm run start时的ERR_OSSL_EVP_UNSUPPORTED错误

错误原因

这个错误源于Node.js v17及以上版本默认启用OpenSSL 3.0安全标准,而项目依赖的构建工具(如Webpack、Vue CLI等)使用了OpenSSL 3.0不再支持的MD4哈希算法,引发加密初始化失败。即便切换到Node.js 14.17仍出现问题,多是因为项目依赖缓存未清理、全局依赖冲突,或是启动脚本存在强制配置冲突。

解决办法

1. 临时绕过加密限制(快速生效)

在启动命令前添加环境变量,允许使用旧哈希算法:

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

2. 清理依赖缓存并重装依赖

切换Node.js版本后,旧依赖缓存可能导致版本冲突,执行以下命令:

# 删除依赖目录和锁文件(根据包管理器选择对应的锁文件)
rm -rf node_modules package-lock.json yarn.lock
# 强制清理npm缓存
npm cache clean --force
# 重新安装依赖
npm install

3. 修改构建配置(长期解决方案)

找到项目的构建配置文件(如webpack.config.js、vue.config.js),将MD4哈希替换为兼容算法(如SHA256):

  • Webpack项目:修改webpack.config.js的output配置
    module.exports = {
      output: {
        hashFunction: 'sha256'
      }
    };
    
  • Vue CLI项目:修改vue.config.js
    const { defineConfig } = require('@vue/cli-service')
    module.exports = defineConfig({
      configureWebpack: {
        output: {
          hashFunction: 'sha256'
        }
      }
    })
    

4. 排查全局依赖冲突

检查全局安装的包(如Webpack、npm)是否与项目本地依赖版本兼容,使用npm list -g查看全局依赖列表,必要时卸载冲突的全局包,改用项目本地依赖(通过npx执行命令)。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 15:55:13