TOMILOG

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"
  },
とみー
フリーランス ← フルスタックエンジニア ← Webデザイナー。2018年、長野県に移住しフルリモートで様々サービス開発に携わるフロントエンジニアとして活動中。開発で得た知見を発信していきます。