結論
$ npm install
$ rm -r node_modules/sharp/
$ npm rebuild --arch=x64 --platform=linux sharp
sharp
画像リサイズやフォーマット変換してくれる。
しかし、そのままnpm install
しても AWS Lambda でエラーになる。
エラー内容
Lambdaのエラーメッセージ
Something went wrong installing the "sharp" module
Cannot find module '../build/Release/sharp-linux-x64.node'
Require stack:
- /var/task/node_modules/sharp/lib/sharp.js
- /var/task/node_modules/sharp/lib/constructor.js
- /var/task/node_modules/sharp/lib/index.js
- /var/task/handler.js
- /var/runtime/index.mjs
Possible solutions:
- Install with verbose logging and look for errors: "npm install --ignore-scripts=false --foreground-scripts --verbose sharp"
- Install for the current linux-x64 runtime: "npm install --platform=linux --arch=x64 sharp"
- Consult the installation documentation: https://sharp.pixelplumbing.com/install",
やったこと
npm install --platform=linux --arch=x64 sharp
しろって書いてる。
でも、そのまま実行してもsharp-linux-x64.node
は作られなかった。
npm rebuild sharp --arch=x64 --platform=linux
を実行すると、sharp-drawin-x64.node
が残ってしまい、無駄な容量になった。
なので、いったん node_modeles の sharp を削除しました。
$ npm install
$ rm -r node_modules/sharp/
$ npm rebuild --arch=x64 --platform=linux sharp
Serverless Frameworkの場合
設定ファイルのpackagerOptions
のscripts
に書いたらできると思います。
custom: {
webpack: {
webpackConfig: './webpack.config.js',
includeModules: true,
packagerOptions: {
scripts: [
'rm -r node_modules/sharp/',
'npm rebuild --arch=x64 --platform=linux sharp'
],
},
},
},