Ошибка запуска Sharp внутри AWS лямбда-функции: двоичные файлы darwin-x64 'нельзя использовать на платформе' linux -x64 ' - PullRequest
1 голос
/ 12 февраля 2020

При попытке выполнить резкий переход внутри лямбда-функции AWS я получаю следующую ошибку:

darwin-x64 'двоичные файлы нельзя использовать на платформе' linux -x64 ' , Удалите каталог 'node_modules / sharp / vendor' и запустите 'npm install'

Я развертываю свои серверные приложения с помощью Serverless Framework с моего MacBook Pro. Как мне решить эту проблему?

1 Ответ

2 голосов
/ 14 февраля 2020

Престижность до stdunbar за то, что направил меня в правильном направлении.

При установке Sharp на MacOS через NPM обычным способом (т.е. npm i sharp --save) установщик автоматически добавляет двоичные файлы для OS X. Но AWS лямбда-функции запускаются на Linux 2 компьютерах с x64 процессоры, и именно поэтому мы получаем эту ошибку.

Чтобы исправить, вы должны сначала полностью удалить Sharp, а затем выполнить:

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

Примечание:

версия 0.25 больше не работает с целевым флагом. Раньше это работало:

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

Затем разверните как обычно из Serverless Framework с sls deploy

Side Примечание:

Sharp ЧРЕЗВЫЧАЙНО БЫСТРО !!! Прежде чем использовать Sharp, я использовал другую утилиту изменения размера изображения, названную Jimp. Он сделал работу, но был довольно медленным. Чтобы избежать ошибок тайм-аута, мне пришлось увеличить размер памяти со 128 до 512, а тайм-аут с 5 секунд до 30 секунд, просто чтобы обработать типичное изображение размером 1 мегабайт.

Вот сравнение между ними для изменения размера 1,2 Мб изображения до 600x400 при той же конфигурации:

Jimp -> использовал 512 Мб памяти и AWS выставил мне счет за 14300 мс.

Sharp -> использовал 132 МБ памяти и AWS выставил счет за 800 мс.

Это более чем в 14 раз быстрее, чем Jimp !!!

...