docs icon indicating copy to clipboard operation
docs copied to clipboard

Node runtime ESM Support

Open r34son opened this issue 1 year ago • 1 comments

В документации описан процесс управления зависимостями 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, но это все танцы с бубном, которых хотелось бы избежать.

r34son avatar Mar 25 '24 21:03 r34son

Для наглядности приложу пример создания архива с кодом функции (использую terraform). Мне приходится исключать package.json из архива, чтобы не упереться в лимиты (тут проблема возможна не только в лимитах, но и в пакетном менеджере отличном от npm). Не хочется тут еще костыли придумывать, чтобы обойти не понятные ограничения. image Какие вижу варианты:

  1. Начать обрабатывать энтрипоинты функций в формате .mjs, что является частью стандарта https://nodejs.org/api/esm.html#enabling. И как это сделано в aws https://docs.amazonaws.cn/en_us/lambda/latest/dg/nodejs-handler.html#nodejs-handler-naming. Могу ошибаться, но кмк доработок требуется минимально.
  2. Усовершенствовать процесс работы с зависимостями. (хочется иметь возможность использовать пакетные менеджеры помимо npm)

r34son avatar Mar 26 '24 19:03 r34son