[node.js]バージョン切り替え方法

node.js

node.jsバージョン切り替え方法

npm run dev

(thread_id_key != 0x7777), function find_thread_id_key, file ../src/coroutine.cc, line 134

複数のプロジェクトを扱うようになると、プロジェクトごとにnode.jsのバージョンを切り替えなければならないシーンが出てきます。上記のエラーは、現在使用しているnode.jsのバージョンが合わなかった際に出てきたエラー。

別のプロジェクトのブランチを切ってきて、npm run devした時のものです。

いろいろ調べてみて、nodeのバージョンを落としたりfiber取り除いたりしてみたのですが解決せず…。

結局、上司に泣きついて解決した作業工程をまとめておきます。

※当方Max OS 11.2.3使用

問題はnode.jsのバージョンにあった!

結論から言うと、今回の問題はプロジェクトにマッチしないnode.jsを使用していることがエラーの原因でした。というわけで、パッケージマネジャを使用し、プロジェクトにマッチしたnode.jsに切り替えます。

node.jsのバージョン管理には、nodebrewを使用する方法や、nodenvを使用する方法など、いろいろあります。

プロジェクトによって使用しているパッケージのバージョンは異なるため、それに合わせたnode.jsを使用する際、こうしたパッケージマネジャを使えば簡単にnode.jsのバージョンが切り替えられるというわけです。

今回は、nodenvを使用してnode.jsのバージョンを切り替える方法を記載します。

nodenv,anydenvが入っていることを前提として書き進めます。双方のインストール方法はこちらから

MacにNode.jsをインストール(anyenv + nodenv編) – Qiita

nodenvを使用してnode.jsのバージョンを切り替える

node.jsのバージョン確認は、 node -vでできます。

@MeowBook nks-frontend % node -v
v15.14.0

つづいて nodenvででコマンドを確認。

@MeowBook nks-frontend % nodenv
nodenv 1.4.0+3.631d0b6
Usage: nodenv <command> [<args>]

Some useful nodenv commands are:
   commands    List all available nodenv commands
   local       Set or show the local application-specific Node version
   global      Set or show the global Node version
   shell       Set or show the shell-specific Node version
   install     Install a Node version using node-build
   uninstall   Uninstall a specific Node version
   rehash      Rehash nodenv shims (run this after installing executables)
   version     Show the current Node version and its origin
   versions    List installed Node versions
   which       Display the full path to an executable
   whence      List all Node versions that contain the given executable

See `nodenv help <command>' for information on a specific command.
For full documentation, see: <https://github.com/nodenv/nodenv#readme>

nodenv versions で既にインストール済みのバージョンを確認。

@MeowBook nks-frontend % nodenv versions
  system
* 15.14.0 (set by /Users/xxx/Documents/xxx-frontend/.node-version)
  16.0.0
  16.2.0

つづいてnodenv install --list で、node.jsインストール時に登録されたバージョンを確認します。

@MeowBook nks-frontend % nodenv install --list
0.1.14
0.1.15
0.1.16
0.1.17
0.1.18

中略

15.13.0
15.14.0
16.0.0
16.1.0
16.2.0
chakracore-dev
chakracore-nightly
chakracore-8.1.2

中略

この時点で任意のバージョンが表示されていなければ`anyenv update `でリストをアプデし、再度`nodenv install --list `で任意バージョンがインストールされていることを確認。

anyenvについてはこちら。

nodenv,anydenvを使ったNode.jsのアップデート

任意のバージョンが表示されていることを確認したら、

nodenv install 16.1.0 のようにバージョンを指定し、node.jsをインストールします。

@MeowBook xxx-frontend % nodenv install 16.1.0 
Downloading node-v16.1.0-darwin-arm64.tar.gz...
-> <https://nodejs.org/dist/v16.1.0/node-v16.1.0-darwin-arm64.tar.gz>
Installing node-v16.1.0-darwin-arm64...
Installed node-v16.1.0-darwin-arm64 to /Users/xxx/.anyenv/envs/nodenv/versions/16.1.0

nodenv local 16.1.0 カレントディレクトリで適用したいバージョンを指定し、設定したら、最後にnode -v できちんと設定できているか確認。

@MeowBook xxx-frontend % nodenv local 16.1.0  
@MeowBook xxx-frontend % node -v              
v16.1.0

npm install で消したnode_modulesを再ダウンロードし、npm dev runでページが見られるか確認しましょう。

補足:vueとvue-template-compilerのバージョンが合わないよ!と言うエラーが出ることがあります。

その際は、package.jsonのdependenciesオブジェクト内のバージョン部分を変更し、古い方のバージョンを新しいバージョンの数値に合わせましょう。

"dependencies": {
  "@nuxtjs/axios": "^5.3.6",
  "@nuxtjs/device": "^1.2.7",
  "@nuxtjs/markdownit": "^1.2.9",
  "@nuxtjs/pwa": "^3.0.0-0",
  "axios": "^0.19.0",
  "chart.js": "^2.8.0",
  "chartjs-plugin-annotation": "^0.5.7",
  "chartjs-plugin-datalabels": "^1.0.0"
  , "cookie-universal-nuxt": "^2.0.18",
  "cookieparser": "^0.1.0",
  "crypto-js": "^4.0.0",
  "flatpickr": "^4.6.3",
  "js-cookie": "^2.2.1",
  "markdown-it-toc": "^1.1.0",
  "nuxt": "^2.0.0",
  "tabulator-tables": "^4.4.3",
  "vanilla-autokana": "^1.1.6",
  "vue": "^2.6.14", // ここか
  "vue-chartjs": "^3.4.2",
  "vue-flatpickr-component": "^8.1.4",
  "vue-server-renderer": "^2.6.14",
  "vue-template-compiler": "^2.6.14", // ここ
  "vuetify": "^2.2.11",
  "vuex-persistedstate": "^2.5.4",
  "vuex-shared-mutations": "^1.0.2"
},

おしまい

Author: Noreen

どうも、こんにちは。 国外をフラフラフラフラしながら仕事をしていましたが、コロナもあり自粛中です。現在は米カリフォルニアベイエリアでカロリー摂取の日々。 ブログではどこかの誰かの役に立つかもしれない情報を気ままに更新しています。