Webpack error at "serve" : digital envelope routines 'ERR_OSSL_EVP_UNSUPPORTED'

I am trying to “ionic serve” a project, and I get this error.

....
[ng]     at processResult (/home/louisro/Documents/mobileApps/BoardLine/ionic5.8_version/node_modules/@angular-devkit/build-angular/node_modules/webpack/lib/NormalModule.js:743:11)
[ng]     at /home/louisro/Documents/mobileApps/BoardLine/ionic5.8_version/node_modules/@angular-devkit/build-angular/node_modules/webpack/lib/NormalModule.js:807:5 {
[ng]   opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
[ng]   library: 'digital envelope routines',
[ng]   reason: 'unsupported',
[ng]   code: 'ERR_OSSL_EVP_UNSUPPORTED'
[ng] }
[ng] Node.js v20.11.1

It seems to be a webpack error. Can you help me figure this out ?

$ npm list | grep webpack
├── webpack@5.90.3
$ npm -v webpack
10.5.0
$ ionic info
[WARN] Error loading @capacitor/ios package.json: Error: Cannot find module
       '@capacitor/ios/package.json'
       
       Require stack:
       -
       /home/louisro/.nvm/versions/node/v20.11.1/lib/node_modules/@ionic/cli/lib/project/index.js
       - /home/louisro/.nvm/versions/node/v20.11.1/lib/node_modules/@ionic/cli/lib/index.js
       - /home/louisro/.nvm/versions/node/v20.11.1/lib/node_modules/@ionic/cli/index.js
       - /home/louisro/.nvm/versions/node/v20.11.1/lib/node_modules/@ionic/cli/bin/ionic
[WARN] Error loading @capacitor/android package.json: Error: Cannot find module
       '@capacitor/android/package.json'
       
       Require stack:
       -
       /home/louisro/.nvm/versions/node/v20.11.1/lib/node_modules/@ionic/cli/lib/project/index.js
       - /home/louisro/.nvm/versions/node/v20.11.1/lib/node_modules/@ionic/cli/lib/index.js
       - /home/louisro/.nvm/versions/node/v20.11.1/lib/node_modules/@ionic/cli/index.js
       - /home/louisro/.nvm/versions/node/v20.11.1/lib/node_modules/@ionic/cli/bin/ionic

Ionic:

   Ionic CLI                     : 7.2.0 (/home/louisro/.nvm/versions/node/v20.11.1/lib/node_modules/@ionic/cli)
   Ionic Framework               : @ionic/angular 5.9.4
   @angular-devkit/build-angular : 12.1.4
   @angular-devkit/schematics    : 12.2.18
   @angular/cli                  : 12.1.4
   @ionic/angular-toolkit        : 4.0.0

Capacitor:

   Capacitor CLI      : 3.3.1
   @capacitor/android : not installed
   @capacitor/core    : 3.3.1
   @capacitor/ios     : not installed

Utility:

   cordova-res                          : not installed globally
   native-run (update available: 2.0.1) : 1.7.4

System:

   NodeJS : v20.11.1 (/home/louisro/.nvm/versions/node/v20.11.1/bin/node)
   npm    : 10.5.0
   OS     : Linux 5.15

$ cat package.json 
{
  "name": "bl",
  "version": "2.0.1",
  "author": "bl Inc",
  "homepage": "http://bl.com/",
  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e"
  },
  "private": true,
  "dependencies": {
    "@angular/common": "~12.1.1",
    "@angular/core": "~12.1.1",
    "@angular/forms": "~12.1.1",
    "@angular/platform-browser": "~12.1.1",
    "@angular/platform-browser-dynamic": "~12.1.1",
    "@angular/router": "~12.1.1",
    "@capacitor-community/facebook-login": "^3.1.1",
    "@capacitor/app": "1.0.6",
    "@capacitor/core": "3.3.1",
    "@capacitor/haptics": "1.1.3",
    "@capacitor/keyboard": "1.1.3",
    "@capacitor/share": "^1.1.0",
    "@capacitor/status-bar": "1.0.6",
    "@capacitor/storage": "^1.2.3",
    "@ionic/angular": "^5.5.2",
    "@ngx-translate/core": "^13.0.0",
    "@ngx-translate/http-loader": "^6.0.0",
    "@types/pouchdb": "^6.4.0",
    "pouchdb": "^7.2.2",
    "rxjs": "~6.6.0",
    "tslib": "^2.2.0",
    "zone.js": "~0.11.4"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "~12.1.1",
    "@angular-eslint/builder": "~12.0.0",
    "@angular-eslint/eslint-plugin": "~12.0.0",
    "@angular-eslint/eslint-plugin-template": "~12.0.0",
    "@angular-eslint/template-parser": "~12.0.0",
    "@angular/cli": "~12.1.1",
    "@angular/compiler": "~12.1.1",
    "@angular/compiler-cli": "~12.1.1",
    "@angular/language-service": "~12.0.1",
    "@capacitor/cli": "3.3.1",
    "@ionic/angular-toolkit": "^4.0.0",
    "@types/jasmine": "~3.6.0",
    "@types/jasminewd2": "~2.0.3",
    "@types/node": "^12.11.1",
    "@typescript-eslint/eslint-plugin": "4.16.1",
    "@typescript-eslint/parser": "4.16.1",
    "eslint": "^7.6.0",
    "eslint-plugin-import": "2.22.1",
    "eslint-plugin-jsdoc": "30.7.6",
    "eslint-plugin-prefer-arrow": "1.2.2",
    "jasmine-core": "~3.8.0",
    "jasmine-spec-reporter": "~5.0.0",
    "karma": "~6.3.2",
    "karma-chrome-launcher": "~3.1.0",
    "karma-coverage": "~2.0.3",
    "karma-coverage-istanbul-reporter": "~3.0.2",
    "karma-jasmine": "~4.0.0",
    "karma-jasmine-html-reporter": "^1.5.0",
    "protractor": "~7.0.0",
    "ts-node": "~8.3.0",
    "typescript": "~4.2.4",
    "webpack": "^5.90.3"
  },
  "description": "deserve"
}

I did this

$ export NODE_OPTIONS=--openssl-legacy-provider

now “ionic serve” works.

What a mess…