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