记录[前端] 在使用webpack打包时,Hash报错信息

135 阅读1分钟

错误信息 vvv

static/js/runtime.b14ae2b5.js from Terser
Error: error:0308010C:digital envelope routines::unsupported
    at new Hash (node:internal/crypto/hash:69:19)
    at Object.createHash (node:crypto:133:10)
    at 项目路径\node_modules\terser-webpack-plugin\dist\index.js:217:37
    at Array.forEach (<anonymous>)
    at TerserPlugin.optimizeFn (项目路径\node_modules\terser-webpack-plugin\dist\index.js:160:259)
    at AsyncSeriesHook.eval [as callAsync] (eval at create (项目路径\node_modules\tapable\lib\HookCodeFactory.js:33:10), <anonymous>:7:1)
    at AsyncSeriesHook.lazyCompileHook (项目路径\node_modules\tapable\lib\Hook.js:154:20)
    at 项目路径\node_modules\webpack\lib\Compilation.js:1409:36
    at AsyncSeriesHook.eval [as callAsync] (eval at create (项目路径\node_modules\tapable\lib\HookCodeFactory.js:33:10), <anonymous>:6:1)
    at AsyncSeriesHook.lazyCompileHook (项目路径\node_modules\tapable\lib\Hook.js:154:20)
    at 项目路径\node_modules\webpack\lib\Compilation.js:1405:32
    at AsyncSeriesHook.eval [as callAsync] (eval at create (项目路径\node_modules\tapable\lib\HookCodeFactory.js:33:10), <anonymous>:6:1)
    at AsyncSeriesHook.lazyCompileHook (项目路径\node_modules\tapable\lib\Hook.js:154:20)
    at Compilation.seal (项目路径\node_modules\webpack\lib\Compilation.js:1342:27)
    at 项目路径\node_modules\webpack\lib\Compiler.js:675:18
    at 项目路径\node_modules\webpack\lib\Compilation.js:1261:4
    at AsyncSeriesHook.eval [as callAsync] (eval at create (项目路径\node_modules\tapable\lib\HookCodeFactory.js:33:10), <anonymous>:24:1)
    at AsyncSeriesHook.lazyCompileHook (项目路径\node_modules\tapable\lib\Hook.js:154:20)
    at Compilation.finish (项目路径\node_modules\webpack\lib\Compilation.js:1253:28)
    at 项目路径\node_modules\webpack\lib\Compiler.js:672:17
    at _done (eval at create (项目路径\node_modules\tapable\lib\HookCodeFactory.js:33:10), <anonymous>:9:1)
    at eval (eval at create (项目路径\node_modules\tapable\lib\HookCodeFactory.js:33:10), <anonymous>:48:22)
    at 项目路径\node_modules\webpack\lib\Compilation.js:1185:12
    at 项目路径\node_modules\webpack\lib\Compilation.js:1097:9
    at process.processTicksAndRejections (node:internal/process/task_queues:77:11)

该问题产生的原因是,在Node17中,nodejs依赖的openssl库对hash做了些更严格的约束,导致了兼容性问题

解决方式

  • https://stackoverflow.com/questions/69692842/error-message-error0308010cdigital-envelope-routinesunsupported
  • https://stackoverflow.com/questions/73144960/error-error0308010cdigital-envelope-routinesunsupported-at-new-hash-nodei

主要是在启动脚本中增加 --openssl-legacy-provider