nodeのバージョンを14系から18系へあげたらnode-gypでエラーが出た
現象
nodeのバージョンを14.17.3 => 18.18.1へあげたら yarn install
時にエラーを吐いた。
Error: spawn node-gyp ENOENT
at ChildProcess._handle.onexit (node:internal/child_process:284:19)
at onErrorNT (node:internal/child_process:477:16)
at process.processTicksAndRejections (node:internal/process/task_queues:82:21)
Emitted 'error' event on ChildProcess instance at:
at ChildProcess._handle.onexit (node:internal/child_process:290:12)
at onErrorNT (node:internal/child_process:477:16)
at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {
errno: -2,
code: 'ENOENT',
syscall: 'spawn node-gyp',
path: 'node-gyp',
spawnargs: [ 'rebuild' ]
自分の場合は利用プロジェクトの fsevents パッケージのインストールでエラーが発生していたことを確認。Yarnキャッシュのクリアなどを試みたがダメだった。
対策
以下記事であるように node-gyp
をインストールすることで解消できた。
npm install -g node-gyp
これと似たような感じかな👀
node-gypについて ChatGPTに聞いた内容👀(そのままです)
内容は精査必要。
node-gyp
はNode.jsのネイティブアドオンモジュールをコンパイルするためのクロスプラットフォームコマンドラインツールです。ネイティブアドオンとは、CやC++で書かれたライブラリであり、Node.jsから直接呼び出すことができます。これにより、JavaScriptでは高速に実行できないような低レベルの操作を高速で行えます。
主な機能:
- Python(通常はv2.7)とC/C++コンパイラ(gcc、clangなど)を使用してネイティブコードをコンパイルします。
- Windows、macOS、Linuxなど、複数のプラットフォームで動作します。
インストール:
node-gyp
はNode.jsのnpm(Node Package Manager)を使ってインストールできます。
npm install -g node-gyp
必要なビルドツール:
-
Windows: Windowsの場合は、
windows-build-tools
パッケージをインストールすると良いです。npm install --global --production windows-build-tools
-
macOS: macOSの場合は、Xcodeをインストールする必要があります。また、コマンドラインツールもインストールすることで、gccやmakeなどの必要なツールを利用できます。
-
Linux: Linuxの場合は、ビルドに必要なパッケージをパッケージマネージャーを使用してインストールします。Ubuntuの場合は、以下のようにします。
sudo apt-get install -y build-essential
使用例:
binding.gyp
というGYP(Generate Your Projects)形式の設定ファイルをプロジェクトのルートディレクトリに作成します。このファイルは、コンパイルする際の設定を定義します。
その後、以下のコマンドでビルドできます。
node-gyp configure
node-gyp build
以上がnode-gyp
の基本的な概要と使用方法です。特定の問題に遭遇している場合、具体的な状況を教えていただければ、更に詳しいガイダンスが可能です。