Physical Address

304 North Cardinal St.
Dorchester Center, MA 02124

Vercel上的node-canvas部署問題

內容目錄

Vercel上的node-canvas部署問題

如果要在Vercel上部署有node-canvas的專案,應該都會遇到這個問題XD可能會有幾種錯誤訊息,像是version 'ZLIB_1.2.9' not found或是libuuid.so.1: cannot open shared object file:,主因是node-canvas會使用以下幾個函式庫:

  1. libuuid.so
  2. libmount.so
  3. libblkid.so
    但Vercel上的serverless環境預設沒有這些函式庫導致部署失敗。

這邊分享我成功的設定。

解決做法

關鍵就是package.json上的設定,必須在執行或編譯前,讓Vercel先安裝函式庫。

  "scripts": {
    "now-build": "yum install libuuid-devel libmount-devel && cp /lib64/{libuuid,libmount,libblkid}.so.1 node_modules/canvas/build/Release/ && npm run start"
  },

並且我的環境使用的是canvas@2.6.1,有人提到canvas@2.8.0也可以,但我是失敗的,這邊就試試看囉

"dependencies": {
    "canvas": "2.6.1",
  },

最後記得Vercel上要將node運作環境改為14。
真是麻煩的問題,找了整整一天資料才成功部署XD