赞
踩
在进行前端项目开发时,我们经常会使用 npm run dev 命令来启动本地服务器。然而,有时候我们会遇到一个让人头疼的问题,就是在执行这个命令时会出现 opensslErrorStack: [ ‘error:03000086:digital envelope routines::initialization error‘ ] 的错误。
这个错误通常是由于 OpenSSL 配置不正确引起的。在本篇博客中,我们将为大家介绍如何解决这个问题。
OpenSSL 是一个开源的加密库,它实现了 SSL 和 TLS 协议。它包括一个加密算法库和一个 SSL/TLS 协议库,可以用于在网络上进行安全通信。
在 Node.js 中,OpenSSL 被用来处理加密和解密、签名和验证等操作。在执行 npm run dev 命令时,Node.js 会使用 OpenSSL 来启动本地服务器。
在执行 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 选项。
如果你不需要使用 --openssl-legacy-provider 选项,你也可以将 NODE_OPTIONS 环境变量完全删除,这样就不会再出现这个错误了。
你可以在 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 可能会更好地与 OpenSSL 兼容。
你可以使用 nvm(Node Version Manager)来安装和管理多个 Node.js 版本。使用 nvm 安装旧版本的 Node.js,然后使用 nvm use 命令来切换到旧版本的 Node.js。以下是在 Windows 操作系统上使用 nvm 安装和管理多个 Node.js 版本的步骤:
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
nvm install 12.22.1
nvm use 12.22.1
node -v
如果一切正常,你应该能够看到当前正在使用的 Node.js 版本为 v12.22.1。
请注意,降级 Node.js 版本可能会影响你的项目依赖项和功能,因此在执行此操作之前,请确保你已经备份了你的项目,并进行了充分的测试。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。