Node: opensslErrorStack: [ ‘error:03000086:digital envelope routines::initialization error‘ ]异常处理

简介: Node: opensslErrorStack: [ ‘error:03000086:digital envelope routines::initialization error‘ ]异常处理

在进行前端项目开发时,我们经常会使用 npm run dev 命令来启动本地服务器。然而,有时候我们会遇到一个让人头疼的问题,就是在执行这个命令时会出现 opensslErrorStack: [ ‘error:03000086:digital envelope routines::initialization error‘ ] 的错误。


这个错误通常是由于 OpenSSL 配置不正确引起的。在本篇博客中,我们将为大家介绍如何解决这个问题。

一、问题描述

1.什么是 OpenSSL?

OpenSSL 是一个开源的加密库,它实现了 SSL 和 TLS 协议。它包括一个加密算法库和一个 SSL/TLS 协议库,可以用于在网络上进行安全通信。


在 Node.js 中,OpenSSL 被用来处理加密和解密、签名和验证等操作。在执行 npm run dev 命令时,Node.js 会使用 OpenSSL 来启动本地服务器。


2.为什么会出现 opensslErrorStack 错误?

在执行 npm run dev 命令时,如果 OpenSSL 配置不正确,就会出现 opensslErrorStack: [ ‘error:03000086:digital envelope routines::initialization error‘ ] 的错误。这个错误通常是由于在 NODE_OPTIONS 环境变量中设置了 --openssl-legacy-provider 选项引起的。


–openssl-legacy-provider 选项是用来启用 OpenSSL 1.0.x 的兼容模式的。然而,在 Node.js 14.x 及以上版本中,这个选项已被禁止使用。因此,如果你在 NODE_OPTIONS 环境变量中设置了 --openssl-legacy-provider 选项,就会出现 opensslErrorStack 错误。

二、问题分析

这个错误是由于在 NODE_OPTIONS 环境变量中设置了 --openssl-legacy-provider 选项,但该选项已被禁止使用。解决这个问题的方法是删除 NODE_OPTIONS 环境变量中的 --openssl-legacy-provider 选项。

三、解决方案

方案一:你可以按照以下步骤来删除 NODE_OPTIONS 环境变量中的 --openssl-legacy-provider 选项:

  1. 打开控制面板,点击“系统和安全”,然后点击“系统”。
  2. 点击“高级系统设置”。
  3. 在“高级”选项卡下,点击“环境变量”按钮。
  4. 在“系统变量”下找到“NODE_OPTIONS”变量,并点击“编辑”。
  5. 删除 --openssl-legacy-provider 选项,并保存更改。

如果你不需要使用 --openssl-legacy-provider 选项,你也可以将 NODE_OPTIONS 环境变量完全删除,这样就不会再出现这个错误了。

方案二:在package.json更改scripts

你可以在 package.json 文件中更改 scripts,将 SET NODE_OPTIONS=–openssl-legacy-provider && vue-cli-service serve 添加到 dev 命令中,如下所示:

   "dev": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve",

这样,在执行 npm run dev 命令时,Node.js 就会自动设置 NODE_OPTIONS 环境变量,并启用 OpenSSL 1.0.x 的兼容模式,从而避免 opensslErrorStack 错误的出现。

方案三:降级 Node.js 版本

如果你尝试了上述方法仍然无法解决问题,那么你可以考虑降级 Node.js 版本。在某些情况下,旧版本的 Node.js 可能会更好地与 OpenSSL 兼容。

你可以使用 nvm(Node Version Manager)来安装和管理多个 Node.js 版本。使用 nvm 安装旧版本的 Node.js,然后使用 nvm use 命令来切换到旧版本的 Node.js。以下是在 Windows 操作系统上使用 nvm 安装和管理多个 Node.js 版本的步骤:

  1. 安装 nvm:在命令行中输入以下命令来安装 nvm:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash

或者

wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
  1. 安装旧版本的 Node.js:在命令行中输入以下命令来安装旧版本的 Node.js(例如 v12.22.1):
nvm install 12.22.1
  1. 切换到旧版本的 Node.js:在命令行中输入以下命令来切换到旧版本的 Node.js:
nvm use 12.22.1
  1. 验证 Node.js 版本:在命令行中输入以下命令来验证当前正在使用的 Node.js 版本:
node -v

如果一切正常,你应该能够看到当前正在使用的 Node.js 版本为 v12.22.1。

请注意,降级 Node.js 版本可能会影响你的项目依赖项和功能,因此在执行此操作之前,请确保你已经备份了你的项目,并进行了充分的测试。

目录
相关文章
|
5月前
webpack 使用打包报错 ERROR in node_modules\@types\node\ts4.8\assert.d.ts
webpack 使用打包报错 ERROR in node_modules\@types\node\ts4.8\assert.d.ts
118 0
|
3月前
|
JavaScript 前端开发 算法
【Node.js 版本过高】运行前端时,遇到错误 `Error: error:0308010C:digital envelope routines::unsupported`
【Node.js 版本过高】运行前端时,遇到错误 `Error: error:0308010C:digital envelope routines::unsupported`
72 0
|
7月前
|
前端开发
【前端异常】Module build failed: Error: ENOENT: no such file or directory, scandir ‘G:\OPWeb\public\node_m
【前端异常】Module build failed: Error: ENOENT: no such file or directory, scandir ‘G:\OPWeb\public\node_m
69 0
|
4月前
|
JavaScript 内存技术
解决node.js版本过高报错问题(Error: error:0308010C:digital envelope routines::unsupported)
解决node.js版本过高报错问题(Error: error:0308010C:digital envelope routines::unsupported)
71 0
解决node.js版本过高报错问题(Error: error:0308010C:digital envelope routines::unsupported)
|
9月前
解决 Error: Node Sass version 6.0.1 is incompatible with ^4.0.0.
解决 Error: Node Sass version 6.0.1 is incompatible with ^4.0.0.
404 0
|
5月前
Webpack打包出错:Error: Cannot find module ‘webpack/lib/node/NodeTemplatePlugin‘ Require stack:
Webpack打包出错:Error: Cannot find module ‘webpack/lib/node/NodeTemplatePlugin‘ Require stack:
|
6月前
|
JavaScript
Node.js Error: Cannot find module express
Node.js Error: Cannot find module express
|
6月前
解决 Error: ENOENT: no such file or directory, scandir ‘..\node_modules\node-sass\vendor‘
解决 Error: ENOENT: no such file or directory, scandir ‘..\node_modules\node-sass\vendor‘
|
10月前
打包报错Error: ‘default‘ is not exported by node_modules/qs/lib/index.js
打包报错Error: ‘default‘ is not exported by node_modules/qs/lib/index.js
200 0
|
12月前
|
消息中间件 Perl
【Rabbitmq报错及解决办法】Error: unable to connect to node rabbit@rabbitmq3: nodedown
【Rabbitmq报错及解决办法】Error: unable to connect to node rabbit@rabbitmq3: nodedown
485 0