【Node.js 版本过高】运行前端时,遇到错误 `Error: error:0308010C:digital envelope routines::unsupported`

简介: 【Node.js 版本过高】运行前端时,遇到错误 `Error: error:0308010C:digital envelope routines::unsupported`



运行前端时遇到报错

E:\vue-kwan-admin>npm run serve
> kwan@0.1.0 serve
> vue-cli-service serve --port 3001
 INFO  Starting development server...
10% building 2/2 modules 0 activeError: error:0308010C:digital envelope routines::unsupported
    at new Hash (node:internal/crypto/hash:68:19)
    at Object.createHash (node:crypto:138:10)
    at module.exports (E:\vue-kwan-admin\node_modules\webpack\lib\util\createHash.js:135:53)
    at NormalModule._initBuildHash (E:\vue-kwan-admin\node_modules\webpack\lib\NormalModule.js:417:16)
    at handleParseError (E:\vue-kwan-admin\node_modules\webpack\lib\NormalModule.js:471:10)
    at E:\vue-kwan-admin\node_modules\webpack\lib\NormalModule.js:503:5
    at E:\vue-kwan-admin\node_modules\webpack\lib\NormalModule.js:358:12
    at E:\vue-kwan-admin\node_modules\loader-runner\lib\LoaderRunner.js:373:3
    at iterateNormalLoaders (E:\vue-kwan-admin\node_modules\loader-runner\lib\LoaderRunner.js:214:10)
    at iterateNormalLoaders (E:\vue-kwan-admin\node_modules\loader-runner\lib\LoaderRunner.js:221:10)
    at E:\vue-kwan-admin\node_modules\loader-runner\lib\LoaderRunner.js:236:3
    at runSyncOrAsync (E:\vue-kwan-admin\node_modules\loader-runner\lib\LoaderRunner.js:130:11)
    at iterateNormalLoaders (E:\vue-kwan-admin\node_modules\loader-runner\lib\LoaderRunner.js:232:2)
    at Array.<anonymous> (E:\vue-kwan-admin\node_modules\loader-runner\lib\LoaderRunner.js:205:4)
    at Storage.finished (E:\vue-kwan-admin\node_modules\enhanced-resolve\lib\CachedInputFileSystem.js:55:16)
    at E:\vue-kwan-admin\node_modules\enhanced-resolve\lib\CachedInputFileSystem.js:91:9
10% building 2/5 modules 3 active E:\vue-kwan-admin\node_modules\webpack\hot\dev-server.jsnode:internal/crypto/hash:68
  this[kHandle] = new _Hash(algorithm, xofLen);
                  ^
Error: error:0308010C:digital envelope routines::unsupported
    at new Hash (node:internal/crypto/hash:68:19)
    at Object.createHash (node:crypto:138:10)
    at module.exports (E:\vue-kwan-admin\node_modules\webpack\lib\util\createHash.js:135:53)
    at NormalModule._initBuildHash (E:\vue-kwan-admin\node_modules\webpack\lib\NormalModule.js:417:16)
    at handleParseError (E:\vue-kwan-admin\node_modules\webpack\lib\NormalModule.js:471:10)
    at E:\vue-kwan-admin\node_modules\webpack\lib\NormalModule.js:503:5
    at E:\vue-kwan-admin\node_modules\webpack\lib\NormalModule.js:358:12
    at E:\vue-kwan-admin\node_modules\loader-runner\lib\LoaderRunner.js:373:3
    at iterateNormalLoaders (E:\vue-kwan-admin\node_modules\loader-runner\lib\LoaderRunner.js:214:10)
    at Array.<anonymous> (E:\vue-kwan-admin\node_modules\loader-runner\lib\LoaderRunner.js:205:4)
    at Storage.finished (E:\vue-kwan-admin\node_modules\enhanced-resolve\lib\CachedInputFileSystem.js:55:16)
    at E:\vue-kwan-admin\node_modules\enhanced-resolve\lib\CachedInputFileSystem.js:91:9
    at E:\vue-kwan-admin\node_modules\graceful-fs\graceful-fs.js:123:16
    at FSReqCallback.readFileAfterClose [as oncomplete] (node:internal/fs/read/context:68:3) {
  opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
  library: 'digital envelope routines',
  reason: 'unsupported',
  code: 'ERR_OSSL_EVP_UNSUPPORTED'
}
Node.js v20.10.0

原因

遇到的错误 Error: error:0308010C:digital envelope routines::unsupported 是在使用 Node.js 版本 17 及更高版本时常见的问题。这个问题通常与 Node.js 处理加密操作的方式有关,因为底层的 OpenSSL 库发生了变化。

在 Node.js 版本 17 及以上中,默认禁用了某些加密算法,这可能导致与一些期望使用这些算法的模块或应用程序的兼容性问题。

解决(通过第一个选项成功解决)

为了解决这个问题,有几个选项:

  1. 设置 NODE_OPTIONS 环境变量:可以通过设置 NODE_OPTIONS 环境变量来配置 Node.js,以允许这些旧的算法。在运行应用程序之前,可以在命令行中进行此设置。例如:
set NODE_OPTIONS=--openssl-legacy-provider
npm run serve
  1. 这会告诉 Node.js 使用 OpenSSL 的旧版提供程序,该提供程序支持可能导致遇到问题的算法。
  2. 降级 Node.js:如果设置 NODE_OPTIONS 不起作用,或者不愿意使用旧版加密操作提供程序,可以考虑降级到更早的 Node.js 版本(如版本 16),这个版本没有这个问题。
  3. 更新依赖项:有时更新项目的依赖项可以帮助解决问题,特别是如果这些依赖项已经被修补以适应新版本的 Node.js。运行 npm update 来更新包。
  4. 检查 Webpack 版本:确保您正在使用与 Node.js 版本兼容的 Webpack 版本。Node.js 和 Webpack 之间的兼容性问题可能导致所遇到的错误。

在做出这些更改后,记得重启开发服务器。如果使用的环境不是本地机器(如持续集成服务器),请确保在那里也应用这些更改。

目录
相关文章
|
前端开发
如何解决前端工程化中出现的版本冲突问题?
如何解决前端工程化中出现的版本冲突问题?
672 61
|
监控 JavaScript 前端开发
深入理解 Nuxt.js 中的 app:error 钩子
【9月更文挑战第25天】在 Nuxt.js 中,`app:error` 钩子是一个强大的工具,用于处理应用程序中的各种错误。它可以在服务器端渲染或客户端运行时触发,帮助提升应用稳定性和用户体验。通过在 `nuxt.config.js` 中定义该钩子,开发者可以实现错误页面显示、错误日志记录及错误恢复等功能,确保应用在遇到问题时能妥善处理并恢复正常运行。
309 10
|
JavaScript 前端开发 程序员
前端学习笔记——node.js
前端学习笔记——node.js
1066 0
|
前端开发 Java Shell
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
1035 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
资源调度 JavaScript 前端开发
前端开发必备!Node.js 18.x LTS保姆级安装教程(附国内镜像源配置)
本文详细介绍了Node.js的安装与配置流程,涵盖环境准备、版本选择(推荐LTS版v18.x)、安装步骤(路径设置、组件选择)、环境验证(命令测试、镜像加速)及常见问题解决方法。同时推荐开发工具链,如VS Code、Yarn等,并提供常用全局包安装指南,帮助开发者快速搭建高效稳定的JavaScript开发环境。内容基于官方正版软件,确保合规性与安全性。
15649 23
|
缓存 JavaScript 前端开发
mapbox没有token/token失效,地图闪烁后变空白,报错Error: A valid Mapbox access token is required to use Mapbox GL JS.
本博客介绍了mapbox如何去除token验证,暴力破解mapbox的token验证机制。一劳永逸解决mapbox地图闪现一下然后变成空白,报错Error: A valid Mapbox access token is required to use Mapbox GL JS.的方法,还介绍了类似问题的具体解决思路。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
JavaScript 前端开发 jenkins
抛弃node和vscode,如何用记事本开发出一个完整的vue前端项目
本文探讨了在不依赖Node和VSCode的情况下,仅使用记事本和浏览器开发一个完整的Vue3前端项目的方法。通过CDN引入Vue、Vue Router、Element-UI等库,直接编写HTML文件实现页面功能,展示了前端开发的本质是生成HTML。虽然日常开发离不开现代工具,但掌握这种基础方法有助于快速实现想法或应对特殊环境限制。文章还介绍了如何用Node简单部署HTML文件到服务器,提供了一种高效、轻量的开发思路。
490 10
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
2295 1
|
机器学习/深度学习 弹性计算 自然语言处理
前端大模型应用笔记(二):最新llama3.2小参数版本1B的古董机测试 - 支持128K上下文,表现优异,和移动端更配
llama3.1支持128K上下文,6万字+输入,适用于多种场景。模型能力超出预期,但处理中文时需加中英翻译。测试显示,其英文支持较好,中文则需改进。llama3.2 1B参数量小,适合移动端和资源受限环境,可在阿里云2vCPU和4G ECS上运行。
1421 1
|
开发者 UED
深入理解 Nuxt.js 中的 app:error 钩子
【9月更文挑战第26天】在 Nuxt.js 中,钩子函数是在特定生命周期阶段执行代码的机制,`app:error` 钩子用于处理应用中的错误,包括服务器端和客户端渲染时出现的问题。它提供了一个集中处理错误的机制,提升了用户体验。当组件渲染过程中出现错误时,`app:error` 钩子会被触发,可以在 `nuxt.config.js` 文件中定义该钩子。通过分析错误对象 `err` 和上下文信息 `context`,开发者可以更好地处理各种错误情况。相比组件内的 `try/catch` 或浏览器原生错误处理,`app:error` 提供了更全局和有针对性的错误处理方式。
347 6