解决 Yarn Build 报错:digital envelope routines::unsupported 完整指南

解决 Yarn Build 报错:digital envelope routines::unsupported 完整指南

💡 原文中文,约1800字,阅读约需5分钟。
📝

内容提要

在使用 yarn run build 时,Node.js 17 及以上版本可能因默认使用 OpenSSL 3.0 而出现错误。解决方案包括设置环境变量、修改 package.json 或调整 Node.js 版本。建议优先设置环境变量以确保兼容性,并逐步更新项目依赖。

🎯

关键要点

  • 在使用 yarn run build 时,Node.js 17 及以上版本可能出现错误,原因是默认使用 OpenSSL 3.0。

  • 错误信息为:Error: error:0308010C:digital envelope routines::unsupported。

  • 解决方案包括设置环境变量、修改 package.json 或调整 Node.js 版本。

  • 推荐的解决方案是设置环境变量,具体命令根据操作系统不同而异。

  • 修改 package.json 可以为团队中的所有开发者提供永久解决方案。

  • 如果以上方案不适合,可以考虑降级到 Node.js 16.x LTS 或升级到最新的 LTS 版本。

  • 错误的根本原因是 OpenSSL 3.0 默认禁用了一些旧算法,导致项目中使用这些算法时出错。

  • 最佳实践建议优先选择设置环境变量,并确保使用最新的 LTS 版本 Node.js。

  • 在团队开发中,建议记录所需的 Node.js 版本和环境配置,使用 .nvmrc 文件保持一致性。

  • 常见问题包括环境变量未生效和安全性影响,建议逐步更新项目依赖以支持新版 OpenSSL。

  • 解决方案相对简单,但需考虑项目具体情况和长期维护计划。

🔎

延伸解读

环境变量设置的重要性

在解决 Yarn Build 报错时,设置环境变量是推荐的首选方案。这种方法简单且对项目影响最小,适合快速解决问题。开发者应确保在新的终端会话中生效,以避免因环境变量未更新而导致的错误。

团队协作中的最佳实践

在团队开发中,建议在项目文档中记录所需的 Node.js 版本和环境配置。使用 .nvmrc 文件可以帮助团队成员保持一致的开发环境,减少因版本不一致而引发的问题。

长期维护与依赖更新

虽然当前的解决方案可以快速修复问题,但从长远来看,逐步更新项目依赖以支持新版 OpenSSL 是必要的。这不仅能提高项目的安全性,还能确保与最新 Node.js 版本的兼容性。

延伸问答

为什么在使用 yarn run build 时会出现 digital envelope routines::unsupported 错误?

这个错误通常出现在使用 Node.js 17 及以上版本时,因为这些版本默认使用 OpenSSL 3.0,而一些旧的加密算法被禁用。

如何解决 yarn build 报错的问题?

可以通过设置环境变量、修改 package.json 或调整 Node.js 版本来解决这个问题。

设置环境变量的具体命令是什么?

在 Windows CMD 中使用 'set NODE_OPTIONS=--openssl-legacy-provider',在 Linux/Mac 中使用 'export NODE_OPTIONS=--openssl-legacy-provider'。

修改 package.json 有什么好处?

修改 package.json 可以为团队中的所有开发者提供永久解决方案,避免每次构建都需要设置环境变量。

如果以上方案不适合,我该如何处理?

可以考虑降级到 Node.js 16.x LTS 版本或升级到最新的 LTS 版本,并更新项目依赖。

使用 legacy provider 会影响项目安全性吗?

启用 legacy provider 主要是为了兼容性,通常不会造成实质性的安全风险,但建议逐步更新项目依赖以支持新版 OpenSSL。

🏷️

标签

➡️

继续阅读