はじめに
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
であることがわかった。
以下コマンドで、公式の最新バージョンを確認。
$ 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のバージョンが古いと使えないものがあるとわかった。