vscode中使用webpack打包显示

node:internal/crypto/hash:79
  this[kHandle] = new _Hash(algorithm, xofLen, algorithmId, getHashCache());
                  ^

Error: error:0308010C:digital envelope routines::unsupported
    at new Hash (node:internal/crypto/hash:79:19)
    at Object.createHash (node:crypto:139:10)
    at module.exports (C:\Users\Admin\AppData\Roaming\npm\node_modules\webpack\lib\util\createHash.js:135:53)
    at NormalModule._initBuildHash (C:\Users\Admin\AppData\Roaming\npm\node_modules\webpack\lib\NormalModule.js:417:16)        
    at handleParseError (C:\Users\Admin\AppData\Roaming\npm\node_modules\webpack\lib\NormalModule.js:471:10)
    at C:\Users\Admin\AppData\Roaming\npm\node_modules\webpack\lib\NormalModule.js:503:5
    at C:\Users\Admin\AppData\Roaming\npm\node_modules\webpack\lib\NormalModule.js:358:12
    at C:\Users\Admin\AppData\Roaming\npm\node_modules\webpack\node_modules\.store\loader-runner@2.4.0\node_modules\loader-runner\lib\LoaderRunner.js:373:3
    at iterateNormalLoaders (C:\Users\Admin\AppData\Roaming\npm\node_modules\webpack\node_modules\.store\loader-runner@2.4.0\node_modules\loader-runner\lib\LoaderRunner.js:214:10)
    at Array.<anonymous> (C:\Users\Admin\AppData\Roaming\npm\node_modules\webpack\node_modules\.store\loader-runner@2.4.0\node_modules\loader-runner\lib\LoaderRunner.js:205:4)
    at Storage.finished (C:\Users\Admin\AppData\Roaming\npm\node_modules\webpack\node_modules\.store\enhanced-resolve@4.5.0\node_modules\enhanced-resolve\lib\CachedInputFileSystem.js:55:16)
    at C:\Users\Admin\AppData\Roaming\npm\node_modules\webpack\node_modules\.store\enhanced-resolve@4.5.0\node_modules\enhanced-resolve\lib\CachedInputFileSystem.js:91:9
    at C:\Users\Admin\AppData\Roaming\npm\node_modules\webpack\node_modules\.store\graceful-fs@4.2.11\node_modules\graceful-fs\graceful-fs.js:123:16
    at FSReqCallback.readFileAfterClose [as oncomplete] (node:internal/fs/read/context:68:3) {
  opensslErrorStack: [
    'error:03000086:digital envelope routines::initialization error',
    'error:0308010C:digital envelope routines::unsupported'
  ],
  library: 'digital envelope routines',
  reason: 'unsupported',
  code: 'ERR_OSSL_EVP_UNSUPPORTED'
}

Node.js v20.14.0
  1. 问题原因
    1. 这个错误 ERR_OSSL_EVP_UNSUPPORTED 通常是由于在较新版本的 Node.js 中,OpenSSL 的默认加密算法发生了变化。从 Node.js v17.0.0 开始,默认情况下,OpenSSL 启用了更严格的加密算法限制。Webpack 在构建过程中使用的某些哈希算法可能不再被默认支持。
  2. 解决方案
    • 设置环境变量
      • 在 Windows 系统下,你可以在命令行中设置环境变量 NODE_OPTIONS 来解决这个问题。在启动 Webpack 构建的命令前加上以下命令:
        set NODE_OPTIONS=--openssl - legacy - provider
        
        然后再运行你的 Webpack 构建命令,例如 webpack - - config webpack.config.js
      • 在 Linux 或 macOS 系统下,使用以下命令:
        export NODE_OPTIONS=--openssl - legacy - provider
        
        之后再运行你的 Webpack 构建命令。

        3.使用上述命令之后发生错误

                        直接在vscode的终端使用第一条命令,即        

set NODE_OPTIONS=--openssl - legacy - provider

                        之后显示:

Set-Variable : 找不到接受实际参数“legacy”的位置形式参数。
所在位置 行:1 字符: 1
+ set NODE_OPTIONS=--openssl - legacy - provider
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Set-Variable],ParameterBindingException
    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.SetVariableCommand

                        这个问题,是因为在 PowerShell 中,设置环境变量的语法与命令提示符(CMD)略有不同。你可以使用以下方式在 PowerShell 中设置 NODE_OPTIONS 环境变量:

$env:NODE_OPTIONS = "--openssl-legacy-provider"

                        设置好环境变量后,你就可以运行 Webpack 相关的命令了。如果你想让这个环境变量在当前会话关闭后依然生效(持久化设置),可以使用以下命令:

[Environment]::SetEnvironmentVariable("NODE_OPTIONS", "--openssl-legacy-provider", "User")

                               上述命令将 NODE_OPTIONS 环境变量设置为用户级别的环境变量。你需要重新启动 PowerShell 会话,新设置的环境变量才会生效。如果希望设置为系统级别的环境变量,可以将 "User" 替换为 "Machine",但这需要管理员权限。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MDY1219

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值