CentOS8でdnf updateしたらnpmがエラー

 CentOS8の環境でdnf updateしたらnpmのインストールで失敗する。

環境: CentOS8, nodejs v12.19.1

# dnf update

Failed:

  npm-1:6.14.8-1.12.19.1.1.module_el8.3.0+610+8a0c1add.x86_64

Error: Transaction failed

clean allを試しても失敗。 # dnf clean all # dnf update

npmを実行すると下記エラー
# npm

internal/modules/cjs/loader.js:834

  throw err;

  ^

Error: Cannot find module '../lib/utils/unsupported.js'

Require stack:

- /usr/lib/node_modules/npm/bin/npm-cli.js

    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:831:15)

    at Function.Module._load (internal/modules/cjs/loader.js:687:27)

    at Module.require (internal/modules/cjs/loader.js:903:19)

    at require (internal/modules/cjs/helpers.js:74:18)

    at /usr/lib/node_modules/npm/bin/npm-cli.js:19:21

    at Object.<anonymous> (/usr/lib/node_modules/npm/bin/npm-cli.js:155:3)

    at Module._compile (internal/modules/cjs/loader.js:1015:30)

    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1035:10)

    at Module.load (internal/modules/cjs/loader.js:879:32)

    at Function.Module._load (internal/modules/cjs/loader.js:724:14) {

  code: 'MODULE_NOT_FOUND',

  requireStack: [ '/usr/lib/node_modules/npm/bin/npm-cli.js' ]

}

よく分からないのでnodejsを削除
# dnf remove nodejs

npmコマンドが残っていたので残骸を削除
# which npm # ll /usr/bin/npm
# rm -rf /usr/lib/node_modules/
# rm /usr/bin/npm

これで再インストール
# dnf install nodejs

直った。


【関連記事】