Нужна ли следующей производственной сборке js папка node_modules на сервере?

#node.js #reactjs #next.js #server-side-rendering

#node.js #reactjs #next.js #рендеринг на стороне сервера

Вопрос:

Я довольно новичок в Next js и процессе его развертывания. Недавно я преобразовал один из своих проектов react js в Next js, чтобы воспользоваться преимуществами функции рендеринга на стороне сервера, которую предлагает Next js. Теперь наступает время развертывания, я понял, что следующая сборка не будет развернута без node_modules папки, присутствующей на сервере. Я использую getServerSideProps на своих страницах и создаю с "build": "next build" помощью команды в package.json. Проблема в том, что моя папка node_modules близка к 300 МБ ( .next сборка добавляет еще около 10 МБ), и я не думаю, что лучше всего сопровождать такой большой вес при каждом развертывании (я намерен развернуть разные экземпляры этой сборки, следовательно, 310 МБ X количество экземпляров) на сервере. Я делаю что-то не так или это единственный способ добиться этого? Я ценю любые ответы. Спасибо…

Ответ №1:

После небольшого исследования я отвечаю на свой собственный вопрос. Если вы используете getServerSideProps , вы не можете статически экспортировать свой проект. Поэтому для развертывания проекта на сервере требуется папка node_modules. Это не значит, что вам нужно передавать FTP node_modules , вы можете выполнить сборку npm на стороне сервера, которая будет загружена node_modules в папку развертывания. В моем случае папка развертывания весит около node_modules 310 МБ, а сама папка — около 300 МБ.

Комментарии:

1. Парню из моей компании удалось сделать это без папки, и мы используем реквизиты на стороне сервера. Я не знаю, какое колдовство он использовал. Сообщу вам, если выясню

2. @Brandon Есть новости?

3. Также интересует волшебство — какие-либо обновления @Brandon?

Ответ №2:

Последняя Next.js в документации есть хороший пример того, как создать автономную сборку, а также отличный пример того, как выполнить это с помощью docker. На данный момент эта функция является экспериментальной.

 // next.config.js
module.exports = {
  experimental: {
    outputStandalone: true,
  },
}
 

Ответ №3:

Нет, вам не нужно добавлять свой node_modules .

Я бы рекомендовал вам ознакомиться с документами о том, как приступить к развертыванию вашего Next.js применение, но по сути:

  • выполнить next build
  • выполнить next export
  • разверните свою out папку (выходная папка по умолчанию, может быть изменена)

Кроме того, вы также можете использовать Netlify для развертывания и размещения вашего приложения.

Комментарии:

1. Спасибо за быстрый ответ. Однако я думал, что вы не сможете использовать next export , если используете getServerSideProps ?

2. vercel.com это лучшее место для следующего развертывания, даже если вы можете использовать CI с Github или Gitab

3. Я не могу получить серверный API на другом порту, выполнив то же самое. Где я ошибаюсь?