Node runtime ESM Support
В документации описан процесс управления зависимостями https://yandex.cloud/ru/docs/functions/lang/nodejs/dependencies
В другом ишью выснили, что для поддержки ESM синтаксиса можно обойтись использованием "type": "module" в package.json https://github.com/yandex-cloud/docs/pull/282#issuecomment-2017710426
Получается неприятная ситуация:
В архиве есть уже все нужные пакеты в папке node_modules, но добавив в package.json "type": "module" - Cloud Functions начинает устанавливать пакеты и упирается в лимит по памяти https://yandex.cloud/ru/docs/functions/concepts/limits
Как вариант можно попробовать вычистить все кроме "type": "module" в package.json, но это все танцы с бубном, которых хотелось бы избежать.
Для наглядности приложу пример создания архива с кодом функции (использую terraform). Мне приходится исключать package.json из архива, чтобы не упереться в лимиты (тут проблема возможна не только в лимитах, но и в пакетном менеджере отличном от npm). Не хочется тут еще костыли придумывать, чтобы обойти не понятные ограничения.
Какие вижу варианты:
- Начать обрабатывать энтрипоинты функций в формате
.mjs, что является частью стандарта https://nodejs.org/api/esm.html#enabling. И как это сделано в aws https://docs.amazonaws.cn/en_us/lambda/latest/dg/nodejs-handler.html#nodejs-handler-naming. Могу ошибаться, но кмк доработок требуется минимально. - Усовершенствовать процесс работы с зависимостями. (хочется иметь возможность использовать пакетные менеджеры помимо npm)