【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 之间的兼容性问题可能导致所遇到的错误。

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

目录
相关文章
|
1天前
|
资源调度 jenkins 持续交付
jenkins 自动安装nodejs16.16.0版本报错处理
jenkins 自动安装nodejs16.16.0版本报错处理
|
1天前
|
JavaScript 前端开发
深入了解前端框架Vue.js的响应式原理
本文将深入探讨Vue.js前端框架的核心特性之一——响应式原理。通过分析Vue.js中的数据绑定、依赖追踪和虚拟DOM等机制,读者将对Vue.js的响应式系统有更深入的理解,从而能够更好地利用Vue.js构建灵活、高效的前端应用。
|
4天前
|
JSON JavaScript 前端开发
js的版本
【5月更文挑战第7天】js的版本
8 1
|
9天前
|
JavaScript 前端开发 C++
【Web 前端】JavaScript window.onload 事件和 jQuery ready 函数有何不同?
【5月更文挑战第2天】【Web 前端】JavaScript window.onload 事件和 jQuery ready 函数有何不同?
|
10天前
|
JavaScript 前端开发 开发者
【Web 前端】什么是JS变量提升?
【5月更文挑战第1天】【Web 前端】什么是JS变量提升?
【Web 前端】什么是JS变量提升?
|
11天前
|
缓存 前端开发 JavaScript
【JavaScript 技术专栏】JavaScript 前端路由实现原理
【4月更文挑战第30天】本文探讨了JavaScript前端路由在SPA中的重要性,阐述了其基本原理和实现方式,包括Hash路由和History路由。前端路由通过监听URL变化、匹配规则来动态切换内容,提升用户体验和交互性。同时,文章也提到了面临的SEO和页面缓存挑战,并通过电商应用案例分析实际应用。理解并掌握前端路由能助开发者打造更流畅的单页应用。
|
11天前
|
资源调度 JavaScript 内存技术
error @achrinza/node-ipc@9.2.2: The engine “node“ is incompatible with this module. Expected version
error @achrinza/node-ipc@9.2.2: The engine “node“ is incompatible with this module. Expected version
|
12天前
|
前端开发 JavaScript 数据安全/隐私保护
前端javascript的DOM对象操作技巧,全场景解析(二)
前端javascript的DOM对象操作技巧,全场景解析(二)
|
12天前
|
移动开发 缓存 JavaScript
前端javascript的DOM对象操作技巧,全场景解析(一)
前端javascript的DOM对象操作技巧,全场景解析(一)
|
12天前
|
缓存 编解码 自然语言处理
前端javascript的BOM对象知识精讲
前端javascript的BOM对象知识精讲