eureka

yarn install で Error: spawn node-gyp ENOENT エラーを解消

0

環境

  • node 12.13.1
  • nuxt 2.14.0
  • yarn 1.21.1

エラー内容

Nuxtアプリで開発中に $ yarn install もしくは $ yarn add で以下のようなエラーが出ました。

[4/4] 🔨  Building fresh packages...
[1/8] ⠈ node-sass
[2/8] ⠈ core-js
[3/8] ⠈ fsevents
[6/8] ⠈ pngquant-bin
warning Error running install script for optional dependency: "/Users/xxxxxx/xxxxx/node_modules/@babel/cli/node_modules/fsevents, /Users/xxxxx/xxxxx/node_modules/watchpack-chokidar2/node_modules/fsevents: Command failed.
Exit code: 1
Command: node install.js
Arguments: 
Directory: /Users/xxxxx/xxxxx/node_modules/watchpack-chokidar2/node_modules/fsevents
Output:
events.js:187
      throw er; // Unhandled 'error' event
      ^

Error: spawn node-gyp ENOENT
    at Process.ChildProcess._handle.onexit (internal/child_process.js:264:19)
    at onErrorNT (internal/child_process.js:456:16)
    at processTicksAndRejections (internal/process/task_queues.js:80:21)
Emitted 'error' event on ChildProcess instance at:
    at Process.ChildProcess._handle.onexit (internal/child_process.js:270:12)
    at onErrorNT (internal/child_process.js:456:16)
    at processTicksAndRejections (internal/process/task_queues.js:80:21) {
  errno: 'ENOENT',
  code: 'ENOENT',
  syscall: 'spawn node-gyp',

結論

fseventsがスクリプトでnode-gypを使用しているのですが、node-gypが見つからず失敗したようです。

たぶんここ。

{
  "name": "fsevents",
  "version": "2.1.3",
  ...,
  "scripts": {
    "clean": "node-gyp clean && rm -f fsevents.node",
    "build": "node-gyp clean && rm -f fsevents.node && node-gyp rebuild && node-gyp clean",
    ...,
  },
  ...,
}

node-gypをグローバルにインストールすると解決しました。

$ npm install -g node-gyp

参考

終わりに

ある程度開発していてモジュール追加しようとしてターミナルにエラーが出ていることに気づいた愚か者でした、、いつから出ていたんだろうか、、

0