[Gatsby.js]Error: Command failed with exit code 1: npm install

React
スポンサーリンク
language

Gatsby.jsでスターターを用いて新規プロジェクトを作成する時に、以下のエラーが出たのでこのエラーの原因と解消方法をご紹介します。

$ gatsby new my-gatsby-project https://github.com/gatsbyjs/gatsby-starter-default
info Creating new site from git:
gatsbyjs/gatsby-starter-default
The default Gatsby starter. Contribute to gatsbyjs/gatsby-starter-default development by creating an account on GitHub.
Cloning into 'my-gatsby-project'... remote: Enumerating objects: 34, done. remote: Counting objects: 100% (34/34), done. remote: Compressing objects: 100% (31/31), done. remote: Total 34 (delta 0), reused 26 (delta 0), pack-reused 0 success Created starter directory layout info Installing packages... npm ERR! code 1 npm ERR! path /Users/my-gatsby-project/node_modules/sharp npm ERR! command failed npm ERR! command sh -c (node install/libvips && node install/dll-copy && prebuild-install) || (node-gyp rebuild && node install/dll-copy) npm ERR! TOUCH Release/obj.target/libvips-cpp.stamp npm ERR! CXX(target) Release/obj.target/sharp/src/common.o npm ERR! info sharp Downloading https://github.com/lovell/sharp-libvips/releases/download/v8.7.4/libvips-8.7.4-darwin-x64.tar.gz ... ERROR Command failed with exit code 1: npm install Error: Command failed with exit code 1: npm install ...

このエラーが出た時の各種バージョンは以下の通りです。

$ node -v
v16.2.0
$ yarn -v
1.22.10
$ gatsby -v
Gatsby CLI version: 3.8.0
スポンサーリンク

解決方法は安定版のnodeにバージョンを下げて新規プロジェクトを立ち上げる

現在のnodeのバージョンは16でしたが、nodeのバージョンを現時点での安定版の14に下げると、Gatsbyの新規プロジェクトを作ることができます。

以下のRelease scheduleで今の安定版を確認してください。

nodejs/Release
Node.js Release Working Group. Contribute to nodejs/Release development by creating an account on GitHub.

nodeのバージョンを安定版に下げるにはnを使います。
次の手順でnodeのバージョンを下げることができます。

$ n list
node/12.14.1
node/16.2.0
$ sudo n stable
Password:

  installing : node-v14.17.1
       mkdir : /usr/local/n/versions/node/14.17.1
       fetch : https://nodejs.org/dist/v14.17.1/node-v14.17.1-darwin-x64.tar.gz
   installed : v14.17.1 (with npm 6.14.13)
$ node -v
v12.14.1

すでに安定版のnodeが入っている方はn stableで安定版に切り替えられます。

次にGatsbyの新規プロジェクトを作るコマンドを叩くと新規プロジェクトが作られます。

$ gatsby new my-gatsby-project https://github.com/gatsbyjs/gatsby-starter-default
info Creating new site from git:
gatsbyjs/gatsby-starter-default
The default Gatsby starter. Contribute to gatsbyjs/gatsby-starter-default development by creating an account on GitHub.
Cloning into 'my-gatsby-project'... remote: Enumerating objects: 28, done. ... Your new Gatsby site has been successfully bootstrapped. Start developing it by running: cd my-gatsby-project gatsby develop

原因はGatsby.jsが最新版のnodeに対応していないから

Gatsby.jsは最新版のnodeには対応していません。
公式にも記載されている通り、安定版をインストールすることを推奨しています。

Generally, it’s recommended to use the Node version whose status is Active LTS (Node 14 at time of writing).

一般に、ステータスがアクティブなLTS(執筆時のノード14)のノードバージョンを使用することをお勧めします。

Upgrading Your Node.js Version
Gatsby's Node.js support policy Gatsby aims to support any version of Node that has a release status of Current , Active , or Maintenance…

注意 安定版のnodeでもインストールできいないこともある

Gatsby.jsの公式では安定版のインストールすることを推奨していますが、スターターによっては安定版のnodeでもインストールできないものもあります。

こちらのスターターは安定版のnodeで新規プロジェクトを作れませんでした。

gatsbyjs-starter-tailwindplay: Gatsby Starter
Gatsby Starters: gatsbyjs-starter-tailwindplay
$ node -v
v14.17.1
$ gatsby new my-gatsby-project https://github.com/app-generator/gatsbyjs-starter-tailwindplay
info Creating new site from git:
app-generator/gatsbyjs-starter-tailwindplay
GatsbyJS Tailwind Starter - TailwindPlay. Contribute to app-generator/gatsbyjs-starter-tailwindplay development by creating an account on GitHub.
Cloning into 'my-gatsby-project'... remote: Enumerating objects: 34, done. ... pm ERR! gyp ERR! cwd /Users/my-gatsby-project/node_modules/sharp npm ERR! gyp ERR! node -v v14.17.1 npm ERR! gyp ERR! node-gyp -v v7.1.2 npm ERR! gyp ERR! not ok npm ERR! A complete log of this run can be found in: ERROR Command failed with exit code 1: npm install Error: Command failed with exit code 1: npm install - error.js:56 makeError ...

このときはnodeのバージョンをもう一つ下げて、node12にします。

次の手順でnodeのバージョンを12にすることができます。

$ n list
node/12.14.1
node/16.2.0
$ n 12.14.1
$ node -v
v12.14.1

node12では正常にインストールすることができました。

$ gatsby new project-name https://github.com/app-generator/gatsbyjs-starter-tailwindplay
info Creating new site from git:
app-generator/gatsbyjs-starter-tailwindplay
GatsbyJS Tailwind Starter - TailwindPlay. Contribute to app-generator/gatsbyjs-starter-tailwindplay development by creating an account on GitHub.
Cloning into 'project-name'... remote: Enumerating objects: 34, done. ... Your new Gatsby site has been successfully bootstrapped. Start developing it by running: cd project-name gatsby develop

まとめ

初心者にはいきなりハマりポイントとなってしまいます。

nを使ってnodeのバージョンを柔軟に切り替えながらスターターをインストールできるか試してみるしかありません。

タイトルとURLをコピーしました