首页 > 编程语言 >nodejs新版本引起的:digital envelope routines::unsupported

nodejs新版本引起的:digital envelope routines::unsupported

时间:2023-04-06 09:03:36浏览次数:55  
标签:nodejs -- routines envelope 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

标签:nodejs,--,routines,envelope,openssl,legacy,版本,provider
From: https://www.cnblogs.com/Ning-Blog/p/17291546.html

相关文章

  • 用nvm管理nodejs版本
    1 nvmgithub下载地址:https://github.com/coreybutler/nvm-windows/releases,2 输入nvm-v或nvmv检查是否安装成功3.nvm的使用nvmoff//禁用node.js版本管理(不卸载任何东西)nvmon//启用node.js版本管理nvminstall<version......
  • Node.js17或更高版本中出现Error: error:0308010C:digital envelope routines::unsupp
    问题描述我在运行别人的Vue项目的时候报各种错误,提示XXX/node_modules/.bin/vue-cli-service:Permissiondenied权限不足的问题。还有一个问题就是:出现Error:error:0308010C:digitalenveloperoutines::unsupported。在网上也查看了解决办法,没有解决。(我之前在Nodejs官网安装......
  • nodejs设置国内镜像
    配置淘宝镜像npmconfigsetregistryhttps://registry.npm.taobao.org--globalnpmconfigsetdisturlhttps://npm.taobao.org/dist--global 欢迎关注作者微信公众号 ......
  • windows安装npm教程(nodejs)
     1、在使用之前,先类掌握3个东西,明白它们是用来干什么的:npm: nodejs下的包管理器。webpack:它主要用途是通过CommonJS的语法把所有浏览器端需要发布的静态资源作相应的准备,比如资源的合并和打包。vue-cli:用户生成Vue工程模板。(帮你快速开始一个vue的项目,也就是给你一......
  • NodeJS 实战系列:个人开发者应该如何选购云服务
    这文章至少值一千元,因为这是我保守估计花出去的冤枉钱(请自行脑补一个苦笑的emoji)文章中会穿插选择云服务的一些建议,当然也会提供一些“薅羊毛”的技巧。不过在此之前我们要想清楚一件更重要的事情:我为了什么购买云服务做产品还是做技术这个问题不仅决定了你接下来的购买策略,还......
  • nodejs连接mysql报错:throw err; // Rethrow non-MySQL errors TypeError: Cannot re
    该问题的解决方案如下:win+R输入cmdmysql-uroot-p输入密码进入到mysql3.执行sql语句,将密码改成123456(自己可以记住的密码即可)alteruser'root'@'localhost'i......
  • jenkins配置多版本的Nodejs
      linux安装nodejs,参考网址:https://www.cnblogs.com/xuejie/p/17264906.html(2)解压安装tarxvzfnode-v11.14.0-linux-x64.tar.gz-C/opt(3)修改环境变量vim/etc/p......
  • nodejs学习笔记(一)——Node简介
    MarkDown的使用#标题1##标题2```代码片段```>内容引用+列表1+xxx-xxx+列表21.xxx2.xxx[官网链接](https://www.baidu.com)N......
  • centos7 yum -y install nodejs安装npm时报错,处理方法
     centos7yum-yinstallnodejs安装npm时报错,处理方法安装npm时报错,处理方法sudo:npm:commandnotfoundsudoyum-yinstallnodejsLoadedplugins:fastestmirr......
  • docker镜像体积优化,拉取最小化jre镜像并构建nodejs环境
    镜像体积优化优化前构建镜像体积:1.2GB优化后构建镜像体积:621.63MB 优化思路,1.centos镜像体积太大,有几百MB,使用alpine版本体积更小。2.只需要jre即可,无需jdk。优化前......