エンジニアを目指す日常ブログ

日々勉強したことのメモ。独学ですので間違っていたらコメント等で教えてください。

インストールしたNode.jsモジュールが実行できなかったときの対処メモ

はじめに

Node.jsのモジュールgatsby-cliをインストールしたが、利用できない(gatsby --helpなどのコマンドを打つとエラーが出る)状態だったので、対処法をメモ。

発生したエラー

以下のコマンドでモジュールをインストールし、

$ npm install -g gatsby-cli

以下のコマンドでgatsbyコマンドを実行しようとすると、エラーが発生した。

$ gatsby -help

エラーの内容は以下。

/home/vagrant/.nvm/versions/node/v10.14.2/lib/node_modules/gatsby-cli/node_modules/gatsby-telemetry/lib/telemetry.js:39
  store = new _eventStorage.EventStorage();
        ^

SyntaxError: Unexpected token =
    at new Script (vm.js:79:7)
    at createScript (vm.js:251:10)
    at Object.runInThisContext (vm.js:303:10)
    at Module._compile (internal/modules/cjs/loader.js:657:28)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
    at Module.load (internal/modules/cjs/loader.js:599:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
    at Function.Module._load (internal/modules/cjs/loader.js:530:3)
    at Module.require (internal/modules/cjs/loader.js:637:17)
    at require (internal/modules/cjs/helpers.js:22:18)

対処した内容

調べてみると、Node.jsのバージョンが古いと、上記のエラーになることがあるとわかった。

以下の記事を参考に、バージョンを確認すると

$ node -v
v10.14.2

v10.14.2であることがわかった。

tomiko0404.hatenablog.com

以下コマンドで、公式の最新バージョンを確認。

$ nvm ls-remote
...省略...
       v16.11.1
       v16.12.0
       v16.13.0   (LTS: Gallium)
       v16.13.1   (Latest LTS: Gallium)
        v17.0.0
        v17.0.1
        v17.1.0
        v17.2.0
        v17.3.0

最新のLTS(Long Term Support)バージョンはv16.13.1とのことなので

$ nvm install 16.13.1

でNode.jsをインストールし直した。

npmも古いですよの警告が出たため、

npm notice New minor version of npm available! 8.1.2 -> 8.3.0

npmも最新版に更新。

$ npm install -g npm@8.3.0

改めてモジュールの実行を試みると、問題なく実行できた。

$ gatsby --help
╔════════════════════════════════════════════════════════════════════════╗
║                                                                        ║
║   Gatsby collects anonymous usage analytics                            ║
║   to help improve Gatsby for all users.                                ║
║                                                                        ║
║   If you'd like to opt-out, you can use `gatsby telemetry --disable`   ║
║   To learn more, checkout https://gatsby.dev/telemetry

おわりに

Node.jsは1年以上前にインストールしてそのままになっていたので、古くなってしまっていた。

モジュールによってはNode.jsのバージョンが古いと使えないものがあるとわかった。