Como corrigir NodeJS / NPM "TypeError: Class extends value undefined is not a constructor or null" em /usr/lib/node_modules/npm/node_modules

Problema:

Quando você tenta executar qualquer comando npm como npm start, você vê uma mensagem de erro como

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)

Solução

Este é um erro interno em npm ou pacotes requeridos por npm. Tipicamente, é causado por uma atualização incompleta de NodeJS e npm que deixa npm ou suas dependências em um estado quebrado.

A solução é reinstalar NodeJS:

  • Desinstale NodeJS usando um comando como
uninstall_node.sh
sudo apt remove nodejs
  • Remova a pasta do pacote NodeJS inteiramente, no Linux ela pode ser movida para uma localização de backup usando ex.
backup_node_modules.sh
sudo mv /usr/lib/node_modules ~/node_modules_backup
  • Reinstalando NodeJS usando um comando como
install_node.sh
sudo apt -y install nodejs
  • Reinstalando quaisquer pacotes globalmente instalados que você precisa, como npm i -g @angular/cli

Check out similar posts by category: NodeJS