Error running Sharp inside AWS Lambda function: darwin-x64' binaries cannot be used on the 'linux-x64' platform

血红的双手。 提交于 2020-06-27 12:12:46

问题


When attempting to run sharp inside an AWS Lambda function, I keep getting the following error:

darwin-x64' binaries cannot be used on the 'linux-x64' platform. Please remove the 'node_modules/sharp/vendor' directory and run 'npm install'

I deploy my serverless applications with Serverless Framework from my MacBook Pro. How do I fix this problem?


回答1:


Kudos to stdunbar for steering me in the right direction.

When installing sharp on MacOS via NPM the normal way (i.e.: npm i sharp --save), the installer automatically adds binaries for OS X. But AWS lambda functions run on Linux 2 machines with x64 processors and this is why we get this error.

To fix you must first uninstall sharp completely and then run:

npm install --arch=x64 --platform=linux sharp

Note:

version 0.25 no longer works with the target flag. This used to work:

npm install --arch=x64 --platform=linux --target=10.15.0 sharp

Then deploy as usual from Serverless Framework with sls deploy

Side Note:

Sharp is EXTREMELY FAST!!! Before using sharp, I was using another image resizing utility named Jimp. It did the job, but was quite slow. To prevent timeout errors, I had to increase the memory size from 128 to 512 and the timeout from 5 seconds to 30 seconds just to handle a typical 1 megabyte image.

Here is a comparison between the two for resizing a 1.2Mb picture down to 600x400 using the same configuration:

Jimp -> used 512Mb of memory and AWS billed me for 14300 ms.

Sharp -> used 132 MB of memory and AWS billed me for 800 ms.

That's more than 14x faster than Jimp!!!




回答2:


I was facing the same issue, when i do npm install --arch=x64 --platform=linux sharp in CMD in windows machine.

Fixed it by opening the CMD in Administrator mode, i did not find any error in running npm install --arch=x64 --platform=linux sharp



来源:https://stackoverflow.com/questions/60181138/error-running-sharp-inside-aws-lambda-function-darwin-x64-binaries-cannot-be-u

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!