• Vue 报错error:0308010C:digital envelope routines::unsupported 解决方案(三种)


     新换的电脑,系统装的win11,node也是18的版本。

            跑了一下老项目,我用的是HbuilderX,点击运行和发行时,都会报错:

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

            出现这个错误是因为 node.js V17版本中最近发布的OpenSSL3.0, 而OpenSSL3.0对允许算法和密钥大小增加了严格的限制,可能会对生态系统造成一些影响.

            搜了一下网上大家的解决办法,主要解决方案有以下几种,但是我用的第二种,推荐第三种:

            方法一:尝试卸载Node.js 17+版本并重新安装Node.js 16+版本,然后再重新启动

            效果:可行,但是我们不能经常这样,毕竟也要跟着node同进退,新项目也得用新node版本是吧。。。

            方法二:方法一的进阶(我用的)

            做法:安装nvm管理工具,可以同时在电脑中安装n套node版本,用的时候进行切换就好。

            具体安装可以参考下面的链接,小姐姐写的很详细:

            nvm管理node版本 - Coderz1 - 博客园 (cnblogs.com)

            需要注意的是:如果和我一样,使用nvm use xxx之后,执行node -v的时候就提示node不是内部语言时,是因为本身电脑里有node.js,导致在nvm创建node快捷方式的时候,和原文件夹名称一样冲突,结果导致没安装上。。所以遇到同样问题的小伙伴,把原来node.js咔咔卸载,顺便删除掉对应的文件夹,再执行一下nvm use xxx就好。

      方法三:package.json增加配置(可行)

            代码:

    1. "scripts": {
    2. "serve": "set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve",
    3. "build": "set NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build"
    4. },

    这种方式其实很好,我这样更改了package.json之后,在命令行用npm run build 或者是 npm run serve 都可以正常走了,不会报错。

            但因为我们项目需要用HbuilderX编辑器上的运行和发行按钮来操作,据我分析,HbuilderX应该内部配置了相关的脚本,但我还没有找到在哪里,否则加上“set NODE_OPTIONS=--openssl-legacy-provider && ”应该用这种方法也可以轻松解决。

            所以如果是用控制台执行脚本来运行和打包,推荐第三种,而且可以在项目代码里维护好,也方便其他同事使用,别人用的时候就不会察觉到这个问题了
     

  • 相关阅读:
    【数据结构】队列的基本操作——基本实现 | 初始化 | 出入队列
    算据——实现低碳计算的一种路径
    Nebula Importer 数据导入实践
    【Vue】组件封装小技巧 — 利用$listener和v-on接收父组件传递的事件
    次时代武器全流程大揭秘
    Java内部类有坑,100%内存泄露!
    数据库连接池
    TCPIP网络编程(一)
    云原生写进上海 “十四五” | 上海市信息服务业行业协会领导一行调研「DaoCloud 道客」
    openstack搭建笔记-train版
  • 原文地址:https://blog.csdn.net/u014723137/article/details/132763893