#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 на другом порту, выполнив то же самое. Где я ошибаюсь?