きっかけはNext.jsで動的OGPを生成する機能を実装するところ。
node-canvasを使ってvercelにデプロイしたところ、次のエラーが発生。
Error: /lib64/libz.so.1: version `ZLIB_1.2.9' not found (required by /vercel/path0/node_modules/canvas/build/Release/libpng16.so.16)
今のところ、node-canvasのバージョンを固定することで回避できるとのこと。
./package.json
{
"name": "offiter",
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start"
},
"dependencies": {
"canvas": "2.6.1"
},
"devDependencies": {
}
}
自分の場合、npm install --save canvas
すると2.8.0がインストールされてました。
ローカルだと問題ないのですが、vercel上だとエラーが発生するのでpackage.jsonだけ修正しておけばよかったです。
2021/07/27時点では、まだ解決されてなさそうです。
issue
vercelはAWSのlambdaを使用しているのですが、canvasがまだAWSのlambdaのnode14に対応していないのが原因な気がします。
解決されることを気長に待ちましょう。
node-canvasをvercelにデプロイするときにはバージョンを2.6.1に固定する。