古いバージョンの canvas モジュールのインストール時に node-gyp もインストールされるが、エラーが発生してインストールできなかった。
環境
macOS Hight Sierra ( version 10.13.6 )
やりたかったこと
npm install canvas@1.x.x
TL;DR
brew install pkg-config brew install cairo sudo xcode-select --switch /Library/Developer/CommandLineTools sudo xcode-select -r
解決までの道のり
記載フォーマット
$ 実行コマンド > 再度 canvas をインストール(npm i canvas)した時のエラーメッセージ
流れ
(最初にどんなエラーが発生したのかは覚えていないが、エラーメッセージで pkg-config がないよ!と言われていたはず。)
$ brew install pkg-config
Package cairo was not found in the pkg-config search path. Perhaps you should add the directory containing `cairo.pc' to the PKG_CONFIG_PATH environment variable No package 'cairo' found gyp: Call to './util/has_lib.sh freetype' returned exit status 0 while in binding.gyp. while trying to load binding.gyp
$ brew install cairo
xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance
$ export PKG_CONFIG_PATH="/usr/local/opt/libffi/lib/pkgconfig" $ xcode-select --install
xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance
上記のコマンドを実行したら、xcode-select: error: command line tools are already installed, use "Software Update" to install updates
というメッセージが出た。
ただ、ソフトウェアアップデートは特に必要なかった(最新版だった)。
$ sudo xcode-select --switch /Library/Developer/CommandLineTools
xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance
$ sudo xcode-select -r
SOLINK_MODULE(target) Release/canvas-postbuild.node CXX(target) Release/obj.target/canvas/src/Canvas.o :
インストール完了!
古いバージョンだからか、警告が出まくってるけど無視無視。
追記
この手順を踏んでもインストールできない場合があった。要調査。
追々記
上記の手順を行なった後、下記の記事にある手順を実施したらインストールできた。 https://qiita.com/maru_cc/items/ea483477d7ed7df6a9cc
まとめ
Mac に全く詳しくないからわからないが、コンパイルするときには上記の設定が必要なのかもしれない。
参考
- https://stackoverflow.com/questions/22100213/package-cairo-was-not-found-in-the-pkg-config-search-path-node-j-s-install-canv
- https://github.com/nodejs/node-gyp/issues/569
- http://shinriyo.hateblo.jp/entry/2018/02/17/Ionic%E3%81%AEiOS%E3%81%AE%E3%83%93%E3%83%AB%E3%83%89%E3%81%AE%E3%82%A8%E3%83%A9%E3%83%BC