Vercel 无服务器函数上的节点画布 - 无服务器函数超出了 50mb 的最大大小限制

Jar*_*tts 6 canvas node-canvas next.js vercel

我根据用户使用canvas包发送到 Next.js 中的 API 路由的数据在服务器上生成图像。

它工作得很好,但我无法将项目部署到 Vercel,因为画布依赖性太大(44.9 MB 压缩大小):

Warning: Max serverless function size of 50 MB compressed or 250 MB uncompressed reached
Serverless Function's page: api/generate-mint-signature-for-character.js
Large Dependencies                         Uncompressed size  Compressed size
application/node_modules/canvas                       172 MB          44.9 MB
application/public/cozy-people-asset-pack            7.37 MB           5.5 MB
application/node_modules/next                        4.42 MB          1.28 MB
Max serverless function size was exceeded for 1 function
Created all serverless functions in: 42.626s
Collected static files (public/, static/, .next/static): 240.385ms
Build Completed in /vercel/output [4m]
Failed to process build result for "api/generate-mint-signature-for-character". Data: {"type":"Lambda"}.
Error: The Serverless Function "api/generate-mint-signature-for-character" is 53.97mb which exceeds the maximum size limit of 50mb. Learn More: https://vercel.link/serverless-function-size
Run Code Online (Sandbox Code Playgroud)

有什么方法可以减少这个依赖项的大小,或者只导入此 API 路径中我需要的包的部分?

Jar*_*tts 7

我通过将canvas依赖项替换为 解决了这个问题@napi-rs/canvas