LoginSignup
1
1

More than 1 year has passed since last update.

画像編集系のnpmパッケージ(sharp,jimp,node-canvas,etc.)が入らないとき

Last updated at Posted at 2021-10-26

主題

自分のホームページが作りたくてGetsbyというReactベースの静的サイトジェネレーター(というよりReactを強化してくれるやつ)をいろいろセットアップしていたら、
npmでgatsby-plugin-manifestをinstallする際sharpのinstall時に

> sharp@0.29.2 install /data/data/com.termux/files/home/source/twosquirrels.pages.dev/node_modules/sharp
> (node install/libvips && node install/dll-copy && prebuild-install) || (node install/can-compile && node-gyp rebuild && node install/dll-copy)

# 中略 (WARN系)

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! sharp@0.29.2 install: `(node install/libvips && node install/dll-copy && prebuild-install) || (node install/can-compile && node-gyp rebuild && node install/dll-copy)`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the sharp@0.29.2 install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

# 後略 (NPMのエラー通知)

このようなエラーが出てインストールできずに困っていました。
その時はTermuxというAndroidでLinuxのようにコマンドが使えるというとても便利なアプリを使っていたのですが、調べてみるとTermuxでなくても同じような症状が出てる人はいるようなのでそれぞれのプラットフォームでの解決方法について記します。
ただ、普通Termux以外だと自動で後述のlibvipsを入れるようになってるっぽいのでTermux以外は特殊な事例だと思います。 知らんけど 

解決方法

事前にlibvipsという画像処理ライブラリをインストールしとく必要があるそうです。
よくエラー見たらinstall/libvipsって書いてあるので一応自力でもわかりそうですが()

Windowsの場合

libvipsのGitHubからvips-dev-{アーキテクチャ}-web-{バージョン}.zipをダウンロードしてちゃんとした場所に解凍し、
なかにあるbinフォルダのパスを通せばOKです。

2021年現在でのWin10でのパスの通し方は

  1. 設定を開く
  2. 検索BOXに環境変数と入力
  3. システムの詳細設定の表示を選択
  4. 下にある環境変数(N)…を選択
  5. 管理者権限を持っていて全ユーザーにパスを通したい場合は下の方のPathを、自分だけの場合は上のPathを選択
    (全ユーザーにパスを通したい場合はvipsを全ユーザーがアクセスできる場所に置いときましょう)
  6. それぞれの編集を選択
  7. 新規から通したいパスを追加
  8. 上へ(U),下へ(O)でいい感じに上の方に持っていきます
    (同じ名前の実行ファイルがあった場合上にある方が優先されます)
  9. OKを選択

です。

Linuxの場合

DebianベースのLinux(=aptが使えるやつ)なら

#apt update && apt upgrade -y # 必要に応じて
apt install libvips-dev -y

でvipsが入るはずです。

aptが使えない場合は僕にはわかりません。自力で調べてください(おい

MacOSの場合

homebrewを入れとけば

brew install vips

でvipsが入るはずです。

Termuxの場合

Termuxの場合は

#pkg update && pkg upgrade -y # 必要に応じて
pkg i libvips -y

でvipsが入ります。

さいごに

vips -v

でvipsのバージョンが出てれば成功です。
その状態でもう一度npmパッケージを入れればちゃんと成功するはずです。

npmのオプション --ignore-scripts でスクリプトを無視してvips入れなくてもパッケージを入れるとかは出来るらしいですが、結局使うにはvips必要だと思うのでそれについては解説しません。

この記事があなたのお役に立てたら幸いです。
ありがとうございました。

Termux、登下校時に電車でプログラミングが出来てチョー便利!!

参考

1
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1