报错如下:

Error: error:0308010C:digital envelope routines::unsupported
    at new Hash (node:internal/crypto/hash:71:19)
    at Object.createHash (node:crypto:133:10)
    at module.exports (/Users/jiahaoran/Downloads/yudao-ui-admin-vue2-master/node_modules/webpack/lib/util/createHash.js:135:53)
    at NormalModule._initBuildHash (/Users/jiahaoran/Downloads/yudao-ui-admin-vue2-master/node_modules/webpack/lib/NormalModule.js:417:16)
    at handleParseError (/Users/jiahaoran/Downloads/yudao-ui-admin-vue2-master/node_modules/webpack/lib/NormalModule.js:471:10)
    at /Users/jiahaoran/Downloads/yudao-ui-admin-vue2-master/node_modules/webpack/lib/NormalModule.js:503:5
    at /Users/jiahaoran/Downloads/yudao-ui-admin-vue2-master/node_modules/webpack/lib/NormalModule.js:358:12
    at /Users/jiahaoran/Downloads/yudao-ui-admin-vue2-master/node_modules/loader-runner/lib/LoaderRunner.js:373:3
    at iterateNormalLoaders (/Users/jiahaoran/Downloads/yudao-ui-admin-vue2-master/node_modules/loader-runner/lib/LoaderRunner.js:214:10)
    at Array.<anonymous> (/Users/jiahaoran/Downloads/yudao-ui-admin-vue2-master/node_modules/loader-runner/lib/LoaderRunner.js:205:4)
    at Storage.finished (/Users/jiahaoran/Downloads/yudao-ui-admin-vue2-master/node_modules/enhanced-resolve/lib/CachedInputFileSystem.js:55:16)
    at /Users/jiahaoran/Downloads/yudao-ui-admin-vue2-master/node_modules/enhanced-resolve/lib/CachedInputFileSystem.js:91:9
    at /Users/jiahaoran/Downloads/yudao-ui-admin-vue2-master/node_modules/graceful-fs/graceful-fs.js:123:16
    at FSReqCallback.readFileAfterClose [as oncomplete] (node:internal/fs/read_file_context:68:3) {
  opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
  library: 'digital envelope routines',
  reason: 'unsupported',
  code: 'ERR_OSSL_EVP_UNSUPPORTED'
}

此错误通常是因为Node.js 17或更高版本中引入了OpenSSL 3,而某些Node.js工具或库可能依赖于较旧的OpenSSL版本。在Node.js 17+中,可能会遇到因为默认的加密库设置而导致的不兼容问题。

为了解决这个问题,有几种方法可以尝试:

1. 使用环境变量
你已经在启动命令中设置了NODE_OPTIONS来使用--openssl-legacy-provider,但如果是在Linux或macOS上,应该使用export来设置环境变量,而不是set(这是Windows的命令)。
如果是在Windows上,确保你的设置语句正确无误。

2. 降级Node.js版本
如果问题持续存在,尝试降级到Node.js 16或更低版本,这些版本不使用OpenSSL 3,因此更可能兼容现有的Node.js项目。你可以使用n或nvm这样的版本管理工具来管理不同的Node.js版本。

3. 更新依赖
检查你的compression-webpack-plugin和其他相关依赖是否有更新的版本,这些更新的版本可能已经解决了与OpenSSL 3的兼容问题。可以通过运行以下命令来更新你的npm包:
npm update
或者指定更新compression-webpack-plugin:
npm install compression-webpack-plugin@latest
4. 修改webpack配置(实测有用)
如果错误是由特定的Webpack插件引起的,考虑修改webpack配置文件,暂时禁用或替换引起问题的插件。

示例:设置环境变量(macOS/Linux)
在终端,设置环境变量:
export NODE_OPTIONS=--openssl-legacy-provider
npm run dev
确保这些命令在你的项目根目录下执行,这是package.json所在的位置。