最近我有一個需求是需要批量生成一批文字圖片,作為前端開發首先想到的當然是通過 canvas 去進行繪製並且保存為 base64 轉圖片。
但如果要批量生產,通過瀏覽器 DOM 來做,在保存的時候會相對比較麻煩一些,這就需要用到 Node 去進行處理,而在 Node 中想調用 canvas 環境就必須安裝 node-canvas 模塊依賴,而我在使用 M2 Mac 設備安裝 node-canvas 的時候會報錯,它會提示:
也就是說官方的 node-canvas 實際上沒有關於 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
第二個完成後,它會告訴你導出幾個路徑來完成,如下所示。請執行這些操作,否則將不起作用。
執行完成後,重新輸入npm install node-canvas
,如無意外就能安裝成功啦,看了下倉庫的 issue,貌似在 linux 環境下,使用 node-canvas 更加麻煩,特別是配合高版本 node 下,可能得使用指定的版本,否則無法安裝成功。