错误:错误:0308010C:数字信封例程::不支持[角度]

问题描述 投票:0回答:8

我试图在詹金斯上构建我的项目。本地构建成功,但 Jenkins 构建失败。有什么解决办法吗? 我正在使用 primeng 模块来实现 p-organizationchart。我怀疑这可能是问题所在。

我使用的版本是:

`"primeicons": "^4.1.0",
 "primeng": "^11.3.0",
 "node" : 14.16.0`

我正在开发 Angular 8

angular jenkins npm node-modules primeng
8个回答
50
投票

这是一个 webpack 问题。作为解决方法,您可以向构建任务添加环境变量:

export NODE_OPTIONS=--openssl-legacy-provider

请参阅 webpack 项目中的 this 问题。

您可以将环境变量添加到 package.json 脚本部分

{
  "scripts": {
    "build": "export NODE_OPTIONS=--openssl-legacy-provider; ng build"
  }
}

如果您使用的是 docker,您可以在构建之前将环境变量添加到 Docker 文件中

ENV NODE_OPTIONS=--openssl-legacy-provider

我对詹金斯不熟悉。如果您在那里使用类似 bash 的脚本来构建您的应用程序,您还可以将该行添加到该脚本中。

注意:在windows中使用set而不是export


15
投票

我遇到了同样的错误,通过从 Node 17.2 降级到 16.10 解决了这个问题

您也可以在启动之前在控制台中运行它

ng serve

$ export NODE_OPTIONS=--openssl-legacy-provider 

1
投票

接受的答案和解决方法忽略了旧版 Node.js 版本 17 中的安全漏洞,该版本默认使用 OpenSSL 版本 3。由于此问题,我的组织需要升级到 Node.js 版本 18,因此降级我的版本或使用旧版 OpenSSL 对我来说不是一个选择。

从下面的堆栈跟踪中,您可以看到 MD4 哈希漏洞和错误,并且它发生在 Webpack 中。所以你会认为最新版本的 Webpack 可以解决问题。

     Generating browser application bundles (phase: building)...node:internal/crypto/hash:71
  this[kHandle] = new _Hash(algorithm, xofLen);
                  ^

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:\workspace\ssdweb\src\main\angular\node_modules\webpack\lib\util\createHash.js:135:53)
    at NormalModule._initBuildHash (C:\workspace\ssdweb\src\main\angular\node_modules\webpack\lib\NormalModule.js:417:16)
    at handleParseError (C:\workspace\ssdweb\src\main\angular\node_modules\webpack\lib\NormalModule.js:471:10)
    at C:\workspace\ssdweb\src\main\angular\node_modules\webpack\lib\NormalModule.js:503:5
    at C:\workspace\ssdweb\src\main\angular\node_modules\webpack\lib\NormalModule.js:358:12
    at C:\workspace\ssdweb\src\main\angular\node_modules\loader-runner\lib\LoaderRunner.js:373:3
    at iterateNormalLoaders (C:\workspace\ssdweb\src\main\angular\node_modules\loader-runner\lib\LoaderRunner.js:214:10)
    at iterateNormalLoaders (C:\workspace\ssdweb\src\main\angular\node_modules\loader-runner\lib\LoaderRunner.js:221:10)
    at C:\workspace\ssdweb\src\main\angular\node_modules\loader-runner\lib\LoaderRunner.js:236:3
    at context.callback (C:\workspace\ssdweb\src\main\angular\node_modules\loader-runner\lib\LoaderRunner.js:111:13)
    at Object.loader (C:\workspace\ssdweb\src\main\angular\node_modules\css-loader\dist\index.js:183:3) {
  opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
  library: 'digital envelope routines',
  reason: 'unsupported',
  code: 'ERR_OSSL_EVP_UNSUPPORTED'
}

Node.js v18.16.0

1
投票

我的节点版本是 20,但仍然存在此问题,然后我删除了 Angular CLI 并安装了最新版本,问题就解决了。


0
投票

如何解决数字信封例程::角度不支持

程序步骤:

1.安装旧版本的node js。 示例 16,17。 我的建议是使用 Node js 16 版本

2.安装完node js后,在cmd命令node -v中检查版本。

3.检查版本后,使用 ng build --prod 命令构建您的项目

问题原因:

较旧的 Angular 版本不支持更新 Node js 版本


0
投票

对我有用的解决方案是降级到节点版本 14。我尝试的其他一切都没有成功。


0
投票

如果您使用的是 Windows,请在终端中运行以下命令,然后重建应用程序

设置 NODE_OPTIONS=--openssl-legacy-provider

对于 Mac 使用:

导出 NODE_OPTIONS=--openssl-legacy-provider

有关更多信息,请参阅如何在运行 Angular 应用程序时解决“不支持数字信封例程”或 ERR_OSSL_EVP_UNSUPPORTED 错误 .


-1
投票

写这篇文章时我遇到了同样的错误。我之前的节点版本是最新(18)。 我如何解决这个问题:

  1. 访问nodejs网站:nodejs.org
  2. 搜索具有 npm 版本 6.14.8 的 NodeJS 版本 -> 我得到了 NodeJS v.14.15.0 -> 下载
  3. 解压你下载的nodejs: tar -xf(nodejs 文件)
  4. 编辑 .bashrc 文件 $ vim ~/.bashrc 并通过 :wq
  5. 保存
  6. 添加这一行: 导出 PATH="/home/(您的名字)/Downloads/node-v14.15.0-linux-x64/bin:$PATH"
  7. 重新启动您的终端
  8. 转到您的项目目录 cd(您的目录)
  9. 运行项目 服务

© www.soinside.com 2019 - 2024. All rights reserved.