Gatsby v2をM1 Macでコンパイルエラーを解消
2021/10/24

M1 Mac で Gatsby v2 がコンパイルエラー

M1 Mac で起動しようとすると、以下のようなエラーが起こった。

    Error: Something went wrong installing the "sharp" module

    Error relocating /usr/lib/libpango-1.0.so.0: g_memdup2: symbol not found
    - Remove the "node_modules/sharp" directory then run
      "npm install --ignore-scripts=false --verbose" and look for errors
    - Consult the installation documentation at https://sharp.pixelplumbing.com/in  stall
    - Search for this error at https://github.com/lovell/sharp/issues

解決策

resolutions で sharp モジュールのバージョンを指定する

    "dependencies": {
      ...
      "gatsby": "^2.21.37",
      "gatsby-image": "^2.4.4",
      "gatsby-plugin-sharp": "^2.6.4",
      "gatsby-transformer-sharp": "^2.5.2",
      ...
    },
    # ↓以下を追加
    "resolutions": {
      "sharp": "^0.29.1"
    },

解決までの流れ

Gatsby のサイトには、この sharp というモジュールを使っている gatsby-plugin-*をアップデートしてと書いてある

https://www.gatsbyjs.com/plugins/gatsby-transformer-sharp/#incompatible-library-version-sharpnode-requires-version-x-or-later-but-z-provides-version-y

しかし、プラグインをアップデートすると、Gatsby v2 で上手く動かない。

調べていくと、sharp モジュールは 0.29.0 から M1 Mac に対応しているようだった

https://sharp.pixelplumbing.com/install#apple-m1

sharp のバージョンだけ指定すれば動かないかな〜と resolutions を使ってみたら動いた!

package.json に以下を追記

  "resolutions": {
    "sharp": "^0.29.1"
  },