问题描述

vue2 启动项目时报错如下:

> npm run serve
Error: error:0308010C:digital envelope routines::unsupported
at new Hash (node:internal/crypto/hash:71:19)
at Object.createHash (node:crypto:133:10)
at module.exports (C:\Users\Administrator\Desktop\SupplyChain_finish\front\node_modules\webpack\lib\util\createHash.js:135:53)
at NormalModule._initBuildHash (C:\Users\Administrator\Desktop\SupplyChain_finish\front\node_modules\webpack\lib\NormalModule.js:417:16)
at handleParseError (C:\Users\Administrator\Desktop\SupplyChain_finish\front\node_modules\webpack\lib\NormalModule.js:471:10)
at C:\Users\Administrator\Desktop\SupplyChain_finish\front\node_modules\webpack\lib\NormalModule.js:503:5
at C:\Users\Administrator\Desktop\SupplyChain_finish\front\node_modules\webpack\lib\NormalModule.js:358:12
at C:\Users\Administrator\Desktop\SupplyChain_finish\front\node_modules\loader-runner\lib\LoaderRunner.js:373:3
at iterateNormalLoaders (C:\Users\Administrator\Desktop\SupplyChain_finish\front\node_modules\loader-runner\lib\LoaderRunner.js:214:10)
at Storage.finished (C:\Users\Administrator\Desktop\SupplyChain_finish\front\node_modules\enhanced-resolve\lib\CachedInputFileSystem.js:55:16)
at C:\Users\Administrator\Desktop\SupplyChain_finish\front\node_modules\enhanced-resolve\lib\CachedInputFileSystem.js:91:9
at C:\Users\Administrator\Desktop\SupplyChain_finish\front\node_modules\graceful-fs\graceful-fs.js:123:16
at FSReqCallback.readFileAfterClose [as oncomplete] (node:internal/fs/read_file_context:68:3) {
opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
library: 'digital envelope routines',
reason: 'unsupported',
code: 'ERR_OSSL_EVP_UNSUPPORTED'
}

问题分析

node.js V17 版本中最近发布的 OpenSSL3.0, 而 OpenSSL3.0 对允许算法和密钥大小增加了严格的限制。本项目是在 Node.js 16.14.0 版本下创建,而运行的版本是 node.js V18 版本,导致出现 OpenSSL 3.0 的版本兼容性问题。

解决方案

方法一

从其他文章找到的办法,但是本人实测不行,原因未知,大概是电脑差异

# 使用win+R,输入cmd,在终端中输入如下命令:
> set NODE_OPTIONS=--openssl-legacy-provider
方法二

修改 vue 项目的 package.json 文件,添加 "serve": "set NODE_OPTIONS=\"--openssl-legacy-provider\" & npm run dev\n",如下:

  "scripts": {
"dev": "vue-cli-service serve",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint",
"serve": "set NODE_OPTIONS=\"--openssl-legacy-provider\" & npm run dev\n"
},
方法三

降低自己 nodejs 的版本保持和 vue 工程的中 nodejs 版本一致即可

Node 版本兼容性问题的更多相关文章

  1. 管理 node 版本,选择 nvm 还是 n?

    来源:http://taobaofed.org/blog/2015/11/17/nvm-or-n/ 引子 我本机安装着 nvm,而 node 本来一直运行在 0.x 的老版本上.后来为了跑 ES6,我 ...

  2. 锁定项目的 node 版本

    一些老项目对 node 版本是有要求的,往往使用默认的新版本包安装不上,scripts 也跑不起来. 之前就遇到过运行一个小程序项目时,根据文档来,第一步安装就出错.本着办法总比问题多的理念,来一个解 ...

  3. 使用nvm利器,管理node版本

    node.js越来越热,应用的场景也越来越多. 但也因为是开源软件,所以具备大多数开源软件都存在的“版本问题”,版本发展很快,版本前后差异性大,老系统用新版本node跑不过,全局安装的第三方组件和no ...

  4. windows下装多个node版本的方法(gnvm)

      安装一个支持windows切换node版本的工具 工作中我们可能需要用到一些工具,但这些工具依赖不同版本的node环境,那我们需要来为的切换node的环境吗, window msi安装的用户需要卸 ...

  5. nvmw安装,用于控制node版本;

    之前一直使用的是node v2.2.0版本,挺说新版本的node解决了npm安装插件产生文件夹结构过深的问题,所以就想更新试试: 上网一看才发现,尼玛的node已经到了6.+版本了,好吧,看来还是得跟 ...

  6. windows安装nvm管理node版本

    1.卸载原本系统里面的nodejs 2.下载nvm安装包:https://github.com/coreybutler/nvm-windows/releases ---->nvm-setup.z ...

  7. 【node】使用nvm管理node版本

    写在前面 nvm(nodejs version manager)是nodejs的管理工具,如果你想快速更新node版本,并且不覆盖之前的版本:或者想要在不同的node版本之间进行切换: 使用nvm来安 ...

  8. 让 Homebrew 走代理更新 + brew 管理 node 版本

    0.前言 环境:MacOS 背景:整理下今天所做的配置. 1. 让 Homebrew 走代理更新 brew update 就卡住了,即使开了 shadowsocks 也不行.因为 shadowsock ...

  9. 升级node版本

    一.升级方法: 1.产看node版本,没安装的请先安装: $ node -v 2.清楚node缓存: $ sudo npm cache clean -f 3.安装node版本管理工具'n'; $ su ...

  10. 使用nvm管理node不同版本,安装,环境配置,切换不同版本的node版本

    文章包含以下内容: 一.下载地址 二.nvm-noinstall.zip安装 三.nvm-setup.zip安装 四.测试安装以及使用 一.下载地址 https://github.com/coreyb ...

随机推荐

  1. MCP 通信消息格式之 JSON-RPC 2.0 协议

    一.背景介绍 MCP 中 Client 与 Server 间使用 JSON-RPC 2.0 作为通信消息格式.JSON-RPC 是 RPC(远程过程调用)的一种具体实现,RPC 是一种通信范式,其核心 ...

  2. 有知道CAE软件Hypermesh的配置要求吗?

    Altair的Hypermesh是一款先进的有限元分析软件,用于高效地处理和模拟复杂的三维几何形状.作为一款仿真软件,Hypermesh的CPU和GPU配置是非常重要的. 首先,对于Hypermesh ...

  3. C++ stack容器 总结

    -----------------------------------stack 容器 stack是一种先进后出(first in last out,FILO)的数据结构,他只有一个出口,stack只 ...

  4. Trie 字典树的原理和应用解析

    如何高效地存储和查找大量字符串或前缀?比如自动补全.拼写检查.敏感词过滤等场景,都对字符串的处理速度有很高要求.哈希表虽然查找快,但并不擅长前缀匹配:普通树结构虽然灵活,但对于大量字符串的处理效率并不 ...

  5. 一个工具管理你的所有 SDK 版本!

    众所周知,我们在面对同一个 SDK 的不同版本时,需要使用到不同的工具来管理,例如: Java:JEnv NodeJs:nvm ... 它们的原理都是基于系统的软连接,让环境变量指向一个软连接来实现切 ...

  6. C#脚本化(Roslyn):如何在运行时引入nuget包

    假设我们开发了一个C#脚本编辑器,利用Roslyn去执行用户所编写的脚本.这时候,如果用户想要引用一个nuget包,应该如何实现呢? 我们想要引用nuget包的话,只要能得到nuget包及其依赖包的所 ...

  7. IoT设备的OTA升级是如何通过MQTT协议实现无缝对接的?

    扫描二维码 关注或者微信搜一搜:编程智域 前端至全栈交流与成长 发现1000+提升效率与开发的AI工具和实用程序:https://tools.cmdragon.cn/ MQTT协议基础与FastAPI ...

  8. AtCoder Beginner Contest 187 ABCDE 题解

    A - Large Digits 思路:签到题,读入字符串即可. view code #include<iostream> #include<string> #include& ...

  9. 论文中关于要使用600线的python代码

    简介 论文中通常要使用600dpi的图片, 如果一个一个用PS来进行修改实在是费力不讨好. 使用python一套带走 code import os from PIL import Image impo ...

  10. POLIR-Laws-公司法: 有限公司、股份公司、集团公司 的含义与区别

    POLIR-Laws-公司法: 有限公司.股份公司.集团公司 的含义与区别 有限公司.股份公司.集团公司 在定义.组织形式.责任承担等方面存在差异. 有限公司(全称是有限责任公司), 是指: 由五十个 ...