🐷
M1 Macでエラー「fatal error: 'vips/vips8' file not found...」が発生したときの対処法
M1 MacでNode.jsを導入したうえで、Next.js(正確にはNext.jsに依存しているzenn-cli)をインストールしたところ以下のようなエラーが発生しました。
$ yarn install
...
> sharp@0.26.3 install /Users/foo/node_modules/sharp
> (node install/libvips && node install/dll-copy && prebuild-install) || (node-gyp rebuild && node install/dll-copy)
info sharp Downloading https://github.com/lovell/sharp-libvips/releases/download/v8.10.0/libvips-8.10.0-darwin-arm64v8.tar.br
ERR! sharp Prebuilt libvips 8.10.0 binaries are not yet available for darwin-arm64v8
info sharp Attempting to build from source via node-gyp but this may fail due to the above error
info sharp Please see https://sharp.pixelplumbing.com/install for required dependencies
CC(target) Release/obj.target/nothing/../node-addon-api/nothing.o
LIBTOOL-STATIC Release/nothing.a
warning: /Library/Developer/CommandLineTools/usr/bin/libtool: archive library: Release/nothing.a the table of contents is empty (no object file members in the library define global symbols)
TOUCH Release/obj.target/libvips-cpp.stamp
CXX(target) Release/obj.target/sharp/src/common.o
../src/common.cc:24:10: fatal error: 'vips/vips8' file not found
#include <vips/vips8>
^~~~~~~~~~~~
1 error generated.
make: *** [Release/obj.target/sharp/src/common.o] Error 1
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/Users/foo/.nodenv/versions/14.15.4/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:194:23)
gyp ERR! stack at ChildProcess.emit (events.js:315:20)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:277:12)
gyp ERR! System Darwin 20.3.0
gyp ERR! command "/Users/foo/.nodenv/versions/14.15.4/bin/node" "/Users/foo/.nodenv/versions/14.15.4/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
> @ampproject/toolbox-optimizer@2.7.1-alpha.0 postinstall /Users/foo/node_modules/@ampproject/toolbox-optimizer
> node lib/warmup.js
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: sharp@0.26.3 (node_modules/sharp):
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: sharp@0.26.3 install: `(node install/libvips && node install/dll-copy && prebuild-install) || (node-gyp rebuild && node install/dll-copy)`
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Exit status 1
どうやらsharp
という画像最適化のためのパッケージがうまく動いていないようです。
ERR! sharp Prebuilt libvips 8.10.0 binaries are not yet available for darwin-arm64v8
sharp
は内部でlibvipsというネイティブの画像処理ライブラリを使っており、根本的にはこちらがエラーの原因だと思われます。
fatal error: 'vips/vips8' file not found #include <vips/vips8>
next/image
を使わないなら無視してOK
Next.jsの場合 => Next.jsは画像を最適化するnext/image
のためにsharp
を使用します。少なくともv10.0.6時点ではnext/image
を使わないのであればsharpは不要です。
Next.jsのpackage.jsonを見ると、sharp
はoptionalDependencies
で指定されていることが分かります。
詳しくは上記の記事を読んでいただければと思いますが、optionalDependencies
はインストールに失敗しても、他の処理は問題ないものとして継続するものなので、next/image
を使わないのであればエラーは無視してしまって問題ないと思われます。
zenn-cliのインストール時にこのエラーが出ても無視してOK
内部でNext.jsを使っているZenn CLIでもこのエラーが発生しますが、同様の理由からエラーは無視してしまって構いません。
根本的な対処法
M1 Mac対応のlibvipsをインストールすれば良いようです。
$ brew info vips
$ brew reinstall vips
Discussion