Node.js Webpack ERR_OSSL_EVP_UNSUPPORTED

yyyllmsg  于 2023-06-05  发布在  Node.js
关注(0)|答案(1)|浏览(155)

我可以在localhost上使用“npm run watch”正常启动我的应用程序。但几天后,我得到了SSL相关的错误:

    • 错误:03000086:数字信封例程::初始化错误 * 和
  • ERR_OSSL_EVP_UNSUPPORTED
    最后,我发现我必须在命令提示符中输入这个,然后成功运行:
    set NODE_OPTIONS=--openssl-legacy-provider && npm run watch
    1.为什么SSL会突然发生变化?我使用的是公司办公电脑和Node.js v18.14.0(未升级)。我的电脑配置悄悄地改变了?我的公司升级了我的浏览器?还是别的什么
    1.除了每次都在命令提示符下输入,我想使用package.json并尝试添加NODE_OPTIONS=--openssl-legacy-provider如下:
"scripts": {
        "test": "echo \"Error: no test specified\" && exit 1",
        "build": "set NODE_ENV=production&& webpack --mode production",
        "watch": "set NODE_OPTIONS=--openssl-legacy-provider NODE_ENV=development&& webpack --mode development --watch"
    },

然后我可以使用“npm run watch”运行应用程序,而不会出现SSL错误,但process.env.NODE_ENV变得未定义。那么package.json中的正确语法是什么呢?
我的环境:
Windows 10专业版64位
Chrome 107.0.5304.121 64位
Node.js v18.14.0
Webpack 5.38.1

u4dcyp6a

u4dcyp6a1#

Q1:Windows上的节点已编译入OpenSSL(即不动态链接),所以这不应该在没有更新节点的情况下改变。Node 18确实使用了OpenSSL3.0,它有新的限制,所以你应该在安装Node 18之后就有了这些限制--尽管取决于你的应用程序做了什么,它可能在“几天”之前还没有真正完成任何需要传统加密算法的操作。我不认为webpack会从一个调用到另一个调用改变它使用的加密,但我远非这方面的Maven,我们也不知道你的应用还做了什么。您的Web浏览器无关紧要。
Q2:虽然Unix shell(至少大多数)可以在一个命令中分配多个envvar(或shellvar),但Windows CMD不能。使用多个命令:

"set NODE_OPTIONS=--openssl-legacy-provider&& set NODE_ENV=blahblah&& ..."

相关问题