【问题标题】:What is --openssl-legacy-provider in NPM?NPM 中的 --openssl-legacy-provider 是什么?
【发布时间】:2021-12-25 22:34:34
【问题描述】:

我正在使用 Tailwind 构建一个简单的 React 应用程序。我使用了 create-react-app,然后安装了 tailwind。我以前做过很多次。

为了安装 Tailwind,我还必须安装 craco 并更改 package.json “脚本”以使用 craco,如下所示:

"scripts": {
    "start": "craco start",
    "build": "craco build",
    "test": "craco test",
    "eject": "react-scripts eject"
  }

然而,这一次,当我运行npm start时,我得到了一个我以前从未遇到过的错误:

Error: error:0308010C:digital envelope routines::unsupported

所以我在 StackOverflow 上进行了搜索,有人建议将 --openssl-legacy-provider 添加到我的“开始”脚本中,如下所示:

"scripts": {
    "start": "craco --openssl-legacy-provider start",
    "build": "craco build",
    "test": "craco test",
    "eject": "react-scripts eject"
  }

它现在正在工作。但是有人可以向我解释一下--openssl-legacy-provider 究竟是什么以及它是如何工作的吗?

【问题讨论】:

  • 但为什么只发生在这一次而不是通常?以后我的所有项目都必须这样做吗?
  • “但为什么它只发生在这一次而不是通常发生?” 因为某些模块使用了不再支持的命令。 “我以后所有的项目都必须这样做吗?” 仅当您使用使用不受支持的命令的模块时。我不知道为什么不再支持此命令,以及它是否与安全有关,但使用不受支持的命令应该是一个危险信号。
  • 哦。非常感谢。

标签: javascript npm openssl tailwind-css craco


【解决方案1】:

由于 Node.js v17 的更改,添加了 --openssl-legacy-provider 以处理 OpenSSL v3 上的密钥大小。 你不知何故安装了最新版本的节点。

  1. 恢复您以前版本的 nodejs。
  2. 从 package.json 中手动删除节点依赖项(例如“node”:17.4.3) 和 packagelock.json。
  3. 删除 node_modules 文件夹并使用 npm install 重新安装 node_modules。

【讨论】:

    猜你喜欢
    • 2021-12-14
    • 2022-10-17
    • 2022-10-06
    • 2022-12-24
    • 2021-05-20
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    相关资源
    最近更新 更多