最近、私は一括でテキスト画像を生成する必要がありました。フロントエンド開発では、まずはキャンバスを使用して描画し、それを base64 に変換して保存する方法を考えました。
しかし、一括生成する場合、ブラウザの DOM を使用して保存すると、やや手間がかかります。そのため、Node を使用して処理する必要があります。そして、Node でキャンバス環境を呼び出すためには、node-canvas モジュールの依存関係をインストールする必要があります。しかし、M2 Mac デバイスで node-canvas を使用しようとすると、エラーが発生します。次のようなエラーメッセージが表示されます。
存在しないバイナリファイルを取得しようとしましたhttps://github.com/Automattic/node-canvas/releases/download/v2.9.1/canvas-v2.9.1-node-v93-darwin-unknown-arm64.tar.gz(あなたと同じ)。残念ながら、このバージョンのリリースページには見当たりません https://github.com/Automattic/node-canvas/releases
つまり、公式の node-canvs には実際には arm64 向けの node-canvas ソースが提供されていないため、別の解決策を見つける必要があります。
node-canvas をインストールする場合、node-gyp も必要です。まず、node-gyp をインストールしておく必要があります(すでにインストールされている場合はスキップしてください)、これにより、依存関係をインストールする際に待ち時間が長くなるか、エラーが発生することがありません。
node-gyp のインストールと設定#
ターミナルウィンドウを開き、次のコマンドを入力します:
export CXXFLAGS="-stdlib=libc++"
このコマンドは C++ 標準ライブラリを libc++ に設定し、これは node-gyp が M1 Mac で動作するために必要です。
ターミナルウィンドウに次のコマンドを入力します:
npm install -g node-gyp
このコマンドは node-gyp パッケージをグローバルにインストールし、インストールが完了するのを待ちます。
node-canvas のインストール#
まず、homebrew ツールをインストールする必要があります。次のコマンドを正確にコピーしてターミナルに貼り付け、ステップごとに実行してください:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
arch -arm64 brew install pkg-config cairo pango libpng jpeg giflib librsvg
2 番目のコマンドが完了すると、完了するためにいくつかのパスをエクスポートするように指示されます。以下に示すようにこれらの手順を実行してください。そうしないと機能しません。
完了したら、npm install node-canvas
と入力し、問題がなければインストールが成功するはずです。リポジトリの issue を見たところ、Linux 環境で node-canvas を使用する場合は、特に高いバージョンの Node と組み合わせる場合は、指定のバージョンを使用する必要があるかもしれません。そうしないと、インストールが成功しない可能性があります。