node 升级之后 npm run build 错误

18 篇文章 1 订阅

错误信息 Error

Error: error:0308010C:digital envelope routines::unsupported
    at new Hash (node:internal/crypto/hash:67:19)
    at Object.createHash (node:crypto:130:10)

该错误源于您对过时的 SSL 版本的依赖,因此您有两个好的选择和两个最好但值得怀疑的选择:

如果是node16及以下版本升级到node18及以上版本,可以直接试试第五种方式

第一种方式、尝试重新安装依赖项

  • 删除node_modules 文件夹并重新运行 npm install。如果您的依赖项依赖于针对您安装的任何 Node 版本进行编译,这可能会立即解决问题。这是最不可能奏效的解决方案,但可能会在不需要您进行任何“实际”工作的情况下解决问题,因此始终值得一试。

第二种方式、更新依赖项

  • 几乎所有存在此问题的依赖项都有可用的较新版本,您可以安装它们。在 Node 18 成为 Node 的 LTS 版本后,找出您的依赖项对应的版本,并将您的依赖项升级到该版本。

这确实是唯一正确的解决方案:更新您的依赖项,因为就像 Node.js 本身一样,它们可能会使您的项目容易受到攻击和利用。

第三种方式、降级到 Node.js v16。

  • 您可以降级 Node 本身,以便使用使用旧版、不安全的 LibSSL 版本的版本。当然,这并不能“解决”运行不安全且可能被利用的代码的问题,但您的代码至少可以运行。

(您可以使用官方 Node 安装程序执行此操作,也可以使用 nvm 之类的程序。对于 Windows,请使用 nvm-windows。)

显然,这不是一个好主意。

第四种方式、告诉 Node 使用旧版 OpenSSL 提供程序

在类 Unix 上(Linux、macOS、Git bash 等):

export NODE_OPTIONS=--openssl-legacy-provider

在 Windows 命令提示符上:

set NODE_OPTIONS=--openssl-legacy-provider

在 PowerShell 上:

$env:NODE_OPTIONS = "--openssl-legacy-provider"

当 Node 新版本刚刚成为活动 LTS 时,选项 1 和 2 实际上不可用,但对于任何仍在寻找此答案的人来说,3 和 4 不应再被视为任何重要选项。

第五种方式、运行的时候设置NODE_OPTIONS

"build": "set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build",

现在可以使用npm run build构建了。

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱宇阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值