解決 node-gyp rebuild error 問題

前言

我對這錯誤的印象是某次在練習寫測試時裝 jest 後出現的,檢查了package-lock.json後看起來jest-haste-map這個套件有用到 fsevents,而之後使用npm install或者yarn install皆會出現以下這個訊息:
node-gyp rebuild error

環境為 Mac OS Catalina version 10.15.2

看起來是在執行階段時node-gyp出了問題,接著它自己重新執行了node-gyp rebuild後出錯,起初我認為是套件的問題並找到了這個回答並執行:

1
2
sudo npm uninstall node-gyp -g
sudo npm uninstall node-gyp

但從來沒有全域安裝node-gyp過,也有些網友執行node-gyp configure是可以的,而我執行後還是失敗,狀態跟這個 issue 差不多。

後來看到 fsevents 在套件說明裡有寫到:

The FSEvents API in MacOS allows applications to register for notifications of changes to a given directory tree. It is a very fast and lightweight alternative to kqueue.

並且注意到剛剛圖裡面有訊息是跟 xcode 以及 apple 相關,最後找到了這個 issue

我的解決方案

有些人可能是有重灌或環境重設導致沒有安裝 xcode,此時只要執行 xcode-select --install 即可(參考說明)。

這邊我使用的解決方案為這個 issue,執行以下兩個指令來重新安裝 xcode:

1
2
sudo rm -rf $(xcode-select -print-path)
xcode-select --install

原因可能是因為我重舊版本向上更新之後 xcode 沒有相容當前版本,所以我使用以上指令來刪除重新安裝。

不過這個指令很暴力的使用 rm -rf,使用它相對危險,使用前請詳閱公開說明書 😆。

結論

為了練習測試安裝了 jest 卻讓我看著一堆 warning 實在是恨得牙癢癢,所幸目前這樣解決完後是可以用的,就看接下來些新的 side project 後會不會有其他問題再來更新,

另一方面也可能因為我在寫 side project 時安裝了一堆有的沒的東西導致這個結果,看來也得找時間來整理一下環境了~

參考

清除 npm 快取