Jak opravit NodeJS / NPM "TypeError: Class extends value undefined is not a constructor or null" v /usr/lib/node_modules/npm/node_modules

Problém:

Když se pokusíte spustit any npm command jako npm start, vidíte error message jako

error.txt
/usr/lib/node_modules/npm/lib/es6/validate-engines.js:31
    throw err
    ^

TypeError: Class extends value undefined is not a constructor or null
    at Object.<anonymous> (/usr/lib/node_modules/npm/node_modules/fs-minipass/lib/index.js:136:4)
    at Module._compile (node:internal/modules/cjs/loader:1233:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1287:10)
    at Module.load (node:internal/modules/cjs/loader:1091:32)
    at Module._load (node:internal/modules/cjs/loader:938:12)
    at Module.require (node:internal/modules/cjs/loader:1115:19)
    at require (node:internal/modules/helpers:119:18)
    at Object.<anonymous> (/usr/lib/node_modules/npm/node_modules/cacache/lib/content/read.js:4:13)
    at Module._compile (node:internal/modules/cjs/loader:1233:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1287:10)

Řešení

Tohle je internal error v npm nebo packages required by npm. Typicky, je caused by incomplete update NodeJS a npm, který leaves npm nebo jeho dependencies v broken state.

Řešení je reinstall NodeJS:

  • Uninstall NodeJS pomocí command jako
uninstall_node.sh
sudo apt remove nodejs
  • Remove NodeJS package folder entirely, na Linux může být moved to backup location pomocí např.
backup_node_modules.sh
sudo mv /usr/lib/node_modules ~/node_modules_backup
  • Re-installing NodeJS pomocí command jako
install_node.sh
sudo apt -y install nodejs
  • Re-installing any globally installed packages, které potřebujete, jako npm i -g @angular/cli

Podívejte se na podobné články podle kategorie: NodeJS