Вы можете установить Linux совместимый пакет, используя следующее:
rm -rf node_modules/sharp
npm install --arch=x64 --platform=linux --target=10.15.0 sharp
Обратите внимание, что это также указывает целевую версию NodeJS, убедитесь, что это та же версия узла, которую вы используете в своем Lambda. Это прямо из документов (см. здесь .)
Однако это не решило моих проблем. Моя бессерверная конфигурация (с использованием плагина serverless-bundle
) означала, что мои модули снова устанавливались в отдельную папку, стирая специфичные для платформы модули c, которые я только что установил вручную.
Два варианта здесь:
- используйте serverless-plugin-scripts , чтобы подключиться к событиям deploy для запуска вышеуказанного патча; или
- запустить без сервера в docker, используя контейнер Linux с соответствующей версией узла.
Для моего конкретного случая c edge , который у меня был до go с Docker. Сценарии сборки будут влиять на каждую разворачиваемую функцию - добавление ~ 30 Мб кода Sharp - и Lambda@Edge имеет ограничения по размеру исходного кода.