Как правильно реализовать SSR без сервера с помощью Next.js, используя `target:" serverless "` в версии 8.0 - PullRequest
0 голосов
/ 13 февраля 2019

Next.js 8.0 только что представил новый параметр конфигурации target: "serverless", описанный в этом блоге .Я установил приложение Hello World ( здесь ), чтобы проверить его.Скопируйте и вставьте вывод .next/serverless/pages/index.js в облачную функцию Google (эквивалент AWS Lambda) и вызовите ее render(), как указано в сообщении блога выше.

Проблема, с которой я сталкиваюсь, заключается в том, чтостраница сама отрисовывается нормально, но затем она пытается извлечь статические ресурсы (файлы сценариев) в том же домене, что и лямбда, что, конечно, не работает, потому что там нет ничего, кроме лямбда-сценария.

Вы можете видетьэто происходит здесь: enter image description here

Идея, к которой я стремился, состояла в том, чтобы использовать эту новую функцию Next.js для реализации архитектуры микро-интерфейса.Каждая страница в pages/ может иметь свою собственную группу разработчиков / жизненный цикл и соответствующим образом масштабироваться в бэкэнде.Это один из главных пунктов продажи этой функции, верно?

Какой стандартный способ решения этой проблемы?Нужно ли настраивать отдельный сервер для статических ресурсов?Тогда поместите оба позади балансировщика нагрузки или маршрутизатора некоторого вида?Если это так, разве это не противоречит цели использования этого для разработки микро-интерфейсов, поскольку статические ресурсы будут включать в себя «index.js», «about.js» и файлы сценариев для каждой страницы, и их необходимо будет повторно развернутьв любое время обновляется какая-либо страница?

Надеюсь, смысл того, что я говорю, имеет смысл.Любая помощь приветствуется!

1 Ответ

0 голосов
/ 13 февраля 2019

Нужно ли мне настраивать отдельный сервер для статических ресурсов?

Я новичок, но да, я верю, что это то, что вам нужно.

Поскольку вы находитесь в GCP, вы можете попробовать Firebase, поскольку он включает в себя облачные функции Google (функция FB - это облачная функция Google, только что упакованная и продаваемая отдельно) и статический хостинг, отвечающий вашим требованиям, включая упомянутые вами данные..

Еще одна проблема заключается в том, что эта новая бессерверная функция nextjs кажется немного более ориентированной на AWS Lambda, поскольку она упаковывает функции отдельно.Вы, наверное, уже знаете, но я все равно отмечу, что GCP ориентирован на «проект» и все функции в вашем проекте имеют общую точку входа.Я не буду вдаваться в подробности, поскольку речь идет не о том, о чем вы спрашиваете, но этот популярный вопрос SO посвящен тому, как это сделать.

edit: я написал это, а затемвспомнил этот пример FB ... другой способ размещения приложения nextjs в Firebase на основе более старой версии nextjs.

...