はじめに
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も最新版に更新。
警告
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のバージョンが古いと使えないものがあるとわかった。