You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级Node.js 14至20时遇数字信封例程不支持错误的解决求助

问题排查与解决方案

这个错误是Node.js 17+版本启用OpenSSL 3.0后,废弃了MD4等弱哈希算法,而你的项目依赖(如Webpack或相关加载器)仍在使用这些算法导致的。以下是针对性的解决方案:

1. 升级Webpack及核心依赖(推荐长期方案)

如果你的项目使用Webpack 4.x及以下版本,直接升级到兼容OpenSSL 3.0的版本:

  • 执行命令升级核心依赖:
    npm install webpack@^5.60.0 webpack-cli@latest webpack-dev-server@latest --save-dev
    
  • 同步升级相关加载器(如ts-loader、babel-loader、css-loader)到最新兼容版本,避免依赖链冲突。

2. 修改Webpack配置,替换哈希算法

在webpack.config.js中明确指定兼容的哈希算法,替换默认的MD4:

module.exports = {
  // 确保Node.js crypto模块正常可用
  node: {
    crypto: true
  },
  output: {
    // 用contenthash替代hash/chunkhash,并指定哈希算法
    filename: '[name].[contenthash].js',
    chunkFilename: '[name].[contenthash].chunk.js',
    hashFunction: 'sha256'
  },
  module: {
    rules: [
      // 若使用css-modules,也需指定哈希算法
      {
        test: /\.css$/,
        use: [
          'style-loader',
          {
            loader: 'css-loader',
            options: {
              modules: {
                hashFunction: 'sha256'
              }
            }
          }
        ]
      },
      // 对ts-loader等其他加载器,确保使用最新版本,无需额外配置
      {
        test: /\.tsx?$/,
        use: 'ts-loader',
        exclude: /node_modules/
      }
    ]
  }
};

3. 临时兼容方案(仅用于过渡)

如果暂时无法升级依赖,可通过环境变量强制启用旧算法:

  • 在package.json的scripts中修改启动/构建命令:
    "scripts": {
      "start": "NODE_OPTIONS=--openssl-legacy-provider webpack serve",
      "build": "NODE_OPTIONS=--openssl-legacy-provider webpack"
    }
    
  • Windows环境下需调整为:
    "scripts": {
      "start": "set NODE_OPTIONS=--openssl-legacy-provider && webpack serve",
      "build": "set NODE_OPTIONS=--openssl-legacy-provider && webpack"
    }
    

额外检查点

  • 运行npm ls webpack确认当前Webpack版本,若为4.x及以下,优先选择升级方案
  • 检查tsconfig.json,确保moduleResolution设置为node,避免crypto模块加载异常
  • 若使用了自定义的Webpack插件,确认插件是否兼容Node.js 17+版本

内容的提问来源于stack exchange,提问作者Tony

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 03:42:01