node版本问题:Error: error:0308010C:digital envelope routines::unsupported

388 阅读1分钟

前言

  出现这个错误是因为 node.js V17及以后版本中最近发布的OpenSSL3.0,

而OpenSSL3.0对允许算法和密钥大小增加了严格的限制,可能会对生态系统造成一些影响.

在node.js V17以前一些可以正常运行的的应用程序,但是在 V17 及以后版本可能会抛出以下异常:

我重装系统前,用的是V16.10左右的版本,今天一口气吃胖子了,直接用装了18.2.0最新稳定版本。

然而这是我第二次出现这个问题,上次node升级也是用的最新稳定版本,emmmm.........

解决方案一

package.json 中进行配置,举例: 
"scripts": { "start": "SET NODE_OPTIONS=--openssl-legacy-provider && react-scripts start", 
"build": "SET NODE_OPTIONS=--openssl-legacy-provider && react-scripts build" },

解决方案二 降级node版本

 node的包管理是nvm 我肯定得装,因为我还需要v14的版本,虽然没有这么着急

 下载地址: github.com/coreybutler…

 

 1. nvm list available 查看可装列表

2.  nvm install 16.14.1 安装指定版本

  1. nvm use v16.14.1 使用指定版本

我遇到的问题

  1. 安装路径有空格,导致安装版本失败,强制用管理身份,安装成功

  2. 但是nvm use v16.14.1 的时候乱码

  3. 解决方案就是删除重新安装nvm 重头来过,应该是可以改setting.txt;但不如我的重头来过的好

 终于成这样

 变成了这样

解决方案三 降低node版本(2)

  1. npm i -g -n

  2. n 16.14.1 //安装指定版本

  3. n rm 18.16.2 //remove 以前的版本