node: --openssl-legacy-provider is not allowed in NODE_OPTIONS

回答 7 浏览 6.7万 2022-07-05

这个问题是在Ubuntu 20.04上更新sudo apt upgrade后出现的。以前我在node v18.0.0和npm 8.7.0版本上工作,但在更新后出现了问题,我运行了命令nvm install node --reinstall-packages-from=node,但没有帮助。 现在我使用npm v8.12.1,node v18.4.0。 当运行命令npm start时,我收到信息。

> mini-app@0.0.0 start
> cross-env PORT=10888 HTTPS=false react-scripts start --openssl-legacy-provider

node: --openssl-legacy-provider is not allowed in NODE_OPTIONS

文件的一部分package.json是这样:

 "scripts": {
    "start": "cross-env PORT=10888 HTTPS=false react-scripts start --openssl-legacy-provider",
    "build": "react-scripts build",
    "predeploy": "npm run build",
    "deploy": "vk-miniapps-deploy",
    "tunnel": "vk-tunnel --insecure=1 --http-protocol=https --ws-protocol=wss --host=localhost --port=10888"
  },

我回到了npm 8.7.0的版本,npm install -g npm@8.7.0但现在连node版本的输出都显示了同样的错误。

node -v
node: --openssl-legacy-provider is not allowed in NODE_OPTIONS

尝试更新:

nvm install 12.13.0
v12.13.0 is already installed.
Now using node v12.13.0 (npm v)
milenao 提问于2022-07-05
7 个回答
#1楼
得票数 31

我在MacOS上遇到了这个问题。在终端,我运行export来检查我的环境变量,看到NODE_OPTIONS=--openssl-legacy-provider已经被设置。然后我简单地运行了unset NODE_OPTIONS,然后就能再次使用node。

broox 提问于2022-08-28
unset工作正常,这条命令节省了很多时间。Sivaraj-v 2022-09-07
#2楼
得票数 20

在Linux上,你需要编辑/etc/ssl/openssl.cnf,取消注释几行以启用旧版提供程序支持。

我使用的是Fedora 36;我不得不改变这些行。

##[provider_sect]
##default = default_sect
##legacy = legacy_sect
##
##[default_sect]
##activate = 1
##
##[legacy_sect]
##activate = 1

修改为:

[provider_sect]
default = default_sect
legacy = legacy_sect

[default_sect]
activate = 1

[legacy_sect]
activate = 1
rimkashox 提问于2022-07-21
节省了时间,在Fedora 36上也遇到了这个问题。谢谢你,伙计。Nicolas W. 2022-08-08
只是补充这些行还没有奏效,我需要重新启动吗?white_gecko 2022-08-17
好吧,我不得不取消注释部分,然后删除node_modules,并再次运行npm install。然后它甚至在没有--openssl-legacy-provider的情况下也能工作,因为我仍然在Fedora 36上运行节点v16.14.0。white_gecko 2022-08-17
对我来说根本不起作用,所以解决办法是安装nvm,用它来安装最新的v16。github.com/nvm-sh/nvmOleksii Donoha 2022-11-24
除了每次用标志导出node_options,没有任何解决办法。当nvm中的节点版本从14.17变为16时,这种情况就会发生。之后,事件降级到14.21对我来说不是解决办法(使用yarn,不是npm)。Sinneren 2023-01-18
#3楼
得票数 7

只需运行这个命令

unset NODE_OPTIONS
Ayman Elshehawy 提问于2022-10-17
干净而简单!johannes 2022-10-30
或在Windows中:设置NODE_OPTIONS=Aadmaa 2022-12-24
#4楼
得票数 6

对我来说,单单取消设置NODE_OPTIONS并不能解决问题,必须使用

nvm use v18 

来解决这个问题

Nisha 提问于2022-10-25
生命的救星。但我认为我之前不得不运行unset NODE_OPTIONSthodwris 2022-11-30
#5楼 已采纳
得票数 4

你可以尝试对NODE_OPTIONS生产变量进行取消设置。它可以在命令行中完成。

你的Node版本似乎已经是最新的了(18版)。一个类似的问题已经根据以下Github链接得到了处理和解决:https://github.com/microsoft/vscode/issues/136599

Peter Minea 提问于2022-07-07
E_net4 the idiot downvoter 修改于2023-02-05
谢谢,这很有帮助!我还使用了nvm install 10命令来修复错误。ERROR: npm is known not to run on Node.js v10.19.0 You'll need to upgrade to a newer Node.js version in order to use this version of npm. You can find the latest version at https://nodejs.org/milenao 2022-07-08
#6楼
得票数 3

我安装了一个新的版本,但没有使用过

nvm use node
Aren Gevorgyan 提问于2022-07-22
Tyler2P 修改于2022-07-23
#7楼
得票数 2

我正在运行macOS。我之前使用的是Node Version 18,在我的NodeJs项目中出现了这个问题

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

我将节点版本降级到16 LTS,然后出现了这样的错误

node: --openssl-legacy-provider is not allowed in NODE_OPTIONS

这个问题只需在终端运行以下命令就能解决了。

unset NODE_OPTIONS

希望这对您有所帮助!:)

Bhavya Verma 提问于2023-01-06
Adem kriouane 修改于2023-01-12