首页 > 编程语言 >使用 node 17以上版本运行项目报错--Error: error:0308010C:digital envelope routines::unsupported

使用 node 17以上版本运行项目报错--Error: error:0308010C:digital envelope routines::unsupported

时间:2023-07-04 11:23:50浏览次数:45  
标签:node 0308010C SET -- openssl legacy 报错 版本 provider

一、起因#

由于电脑重装系统,重新下载nodejs,自然更新到最新版本18,之前的版本才16。更新到最新nodejs版本后,运行vue文件,报错:

this[kHandle] = new _Hash(algorithm, xofLen);
^

Error: error:0308010C:digital envelope routines::unsupported

 

 

 二、探索#

常规操作,上网查原因:

node.js 的版本问题

因为 node.js V17版本中最近发布的OpenSSL3.0, 而OpenSSL3.0对允许算法和密钥大小增加了严格的限制,可能会对生态系统造成一些影响。故此以前的项目在升级 nodejs 版本后会报错。

三、解决#

1.推荐:修改package.json,在相关构建命令之前加入SET NODE_OPTIONS=--openssl-legacy-provider

"scripts": {
   "serve": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve",
   "build": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build"
},

这种可以一劳永逸,以后直接通过npm执行scripts里面的命令即可。不管是项目迭代,还是团队开发,这种都比较有效。

2.当次运行的命令窗口有效:在你当前文件的cmd命令窗口输入:SET NODE_OPTIONS=--openssl-legacy-provider, 回车后输入 npm运行命令

 

这种做法,就是每次运行都要输入SET NODE_OPTIONS=--openssl-legacy-provider,来告诉nodejs,别使用最新的SSL3.0,还是使用以前旧版本的。

 3.就是nodejs版本回退到16版本,这样就可以直接运行了。

网上一些答主的做法:

 

 分析下他做法错误之处:首先,他打开cmd之后,直接回车:

 

 这种做法很傻,因为你起码要进入到对应文件的位置,不然的话,不出意外的话,就出意外了。

最后补充一点:

关于:SET NODE_OPTIONS=--openssl-legacy-provider,其实这种方法不能一劳永逸,它的legacy的中文意思翻译过来是经典的,传统的,对于目前2022年12月4号来说,openssl3.0是最新的,之前的版本属于legacy版本,但是随着时间的推移,

未来可能在2024年,openssl3.0可能也变成了legacy版本,此时再设置SET NODE_OPTIONS=--openssl-legacy-provider,来通知nodejs使用传统的openSSL来执行,那么可能就会运行错误。那么对于产品的迭代维护来说,最好的话,还是使用旧版本的nodejs,比如16版本的,这个才可能是解决问题的关键。

四、最后#

记录下闲话,最近在部署vue程序在老旧的windows服务器上,老旧的服务器是至强cpu,iis6.0的,使用起来真操蛋,关键该服务器还是在内网中的,部署起来要远程连接到另一台电脑,另一台电脑再连接到这台服务器上,需要上传部署文件都要先通过微信发给医院内部的人,医院内部的人帮我们传到这台服务器上,是的,远程连接不支持传文件,真操蛋,医院又不给我们权限,自己上传,部署起来真心累,周六日这两天都用来搞这玩意了,最后因为iis没办法安装url重写和APR路由映射,果断放弃使用iis,使用了nginx,浪费老子这么多时间!!!!

 

 

出处:https://www.cnblogs.com/hmy-666/p/16949982.html

===========================================================================

 

标签:node,0308010C,SET,--,openssl,legacy,报错,版本,provider
From: https://www.cnblogs.com/mq0036/p/17525240.html

相关文章

  • rsync 遇到中文乱码文件名无法同步,并报错:rsync: rename "/test1/abc/abc/opt/abc/abc/
    rsync遇到中文文件名乱码报错报错如下:rsync:rename"/test1/abc/def/efg/abc-V2/img_abc/.δ\#261\#352\#314\#342-3.jpg.wdPu5C"->"event/abc-V2/img_abc/δ\#261\#352\#314\#342-3.jpg":Input/outputerror(5)rsync:rename"/test1/abc/def/e......
  • g2o运行报错double free or corruption (out)
    问题项目中调用了g2o,编译没有问题,但是运行的时候报错了,报错的位置是g2o的SparseOptimizer类的析构函数里调用的clear()函数.明明上一个项目运行过程中没遇到这种g2o内部的问题,而且我上一个项目到现在,没有更改过g2o库,就很懵,不知道该怎么解决这个问题.解决过程看了clear......
  • go get -u failed 失败 报错
    panic:internalerror:can'tfindreasonforrequirementongithub.com/pkg/[email protected][running]:cmd/go/internal/modget.(*resolver).updateBuildList.func1({{0x140000ba378,0x15},{0x14000110996,0x6}})/usr/local/go/src/cmd/go/......
  • 7.3 轮播图图片路径报错的解决办法
    图片导入media文件夹后,启动前端打开主页界面,一直显示找不到图片的路径一直报/banner/banner.pngnotfound缺少media路径后来发现是dev配置文件中缺少了media的配置 需要填入如上图所示MEDIA_URL配置,之后只要用到media文件夹下的资源就会自动拼接media路径......
  • Maven 报错处理
    从svn拉项目时,如果一个项目有多个子工程,1). 直接从trunk下拉项目,例如wm6-jzmd-project-latest(荆州电子)、wm6-ttbeer-project(青啤),然后在eclipse里import-->ExistingMavenProjects根据引导下一步直到完成;2). 然后右键上面两个项目名称下面的pom.xml(即一级工程下)Maven-->Update......
  • shell命令之expect报错
    一、运行shtest.sh报错test.sh:行7:spawn:未找到命令test.sh:行10:send:未找到命令test.sh:行11:interact:未找到命令原因:第一,你不该用sh,因为这是expect脚本,直接执行./e.sh或expect./e.sh第二,确认expect是在/usr/local/bin下参考:https://zhidao.baidu.com/question/7528840......
  • spring报错-Caused by: java.lang.IllegalArgumentException: Unsupported class file
    这个错误原因是因为JDK版本过高,改一下版本就行了把里面的19改成8这样就行了......
  • spring报错
    C:\Users\dell\.jdks\openjdk-19.0.2\bin\java.exe"-javaagent:E:\idea图片\IntelliJIDEA2022.2.3\lib\idea_rt.jar=51567:E:\idea图片\IntelliJIDEA2022.2.3\bin"-Dfile.encoding=UTF-8-Dsun.stdout.encoding=UTF-8-Dsun.stderr.encoding=UTF-8-......
  • linux源码解读(三):文件系统——inode【转】
    转自:https://www.cnblogs.com/theseventhson/p/15622853.html众所周知,计算机系统在掉电后也能存储数据的就是磁盘了,所以大量数据大部分时间是存放在磁盘的;现在新买的PC,磁盘从数百G到1TB不等;服务器的磁盘从数十TB到上百TB,这么大的存储空间,该怎么高效地管理和使用了?站在硬件角度,cpu......
  • Linux struct inode结构【转】
    转自:https://www.cnblogs.com/wanghetao/archive/2012/05/28/2521675.html*索引节点对象由inode结构体表示,定义文件在linux/fs.h中*/structinode{      structhlist_node    i_hash;          /*哈希表*/      structlist_head  ......