Полное руководство по установке Next.js в 2026: от первого запуска до продакшена
Вы открываете любую статью из топа: «Установите Node.js, выполните npx create-next-app, запустите npm run dev - готово!» Три абзаца, и всё. А через час вы сидите с красным терминалом, 15 ошибками и чувством, что вы - единственный, кто не смог запустить Next.js.
Я был на вашем месте. Поэтому эта статья - не очередная перепечатка документации. Это живой сборник боли, ошибок и решений, которые я собирал 4 года работы с Next.js. Здесь нет воды. Только то, что реально работает в 2026 году.
Кому поможет материал:
Новичкам - которые боятся слова «серверный рендеринг».
React-разработчикам - которые хотят перейти на Next.js, но не знают, с чего начать.
Тимлидам - которые выбирают стек для нового проекта.
Что вы узнаете:
Как установить Next.js тремя разными способами (и какой выбрать).
Почему ваш проект не запускается и как это починить за 30 секунд.
В чём реальная разница между Next.js и React (и когда использовать каждый).
Как задеплоить приложение, чтобы оно не упало при первом же пользователе.
Поехали.
1. Что такое Next.js и почему о нём говорят все?
Представьте, что вы строите дом. React - это кирпичи и цемент. Вы можете построить стены, но отоплене, водопровод и электричество придётся подключать отдельно. Next.js - это готовый строительный комплект, где уже есть всё: отоплене (SSR), трубы (роутинг) и генератор (оптимизация).
Если совсем просто:
React рендерит страницу в браузере. Пользователь видит пустой экран, пока не загрузится JavaScript.
Next.js рендерит страницу на сервере. Пользователь сразу видит готовый HTML.
Это критично для SEO. Яндекс и Google не любят ждать, пока подгрузится JS. Если ваш сайт - интернет-магазин или блог, Next.js - это не вопрос выбора, это вопрос выживания.
Ключевая фишка, о которой молчат в гайдах
Next.js автоматически разделяет код (code splitting). Это значит, что на главную страницу загружается только тот код, который нужен для главной. Остальные страницы подгружаются, когда пользователь переходит по ссылке. В чистом React это настраивать - геморрой. В Next.js - работает из коробки.
2. Как установить Next.js: 3 способа для разных задач
Большинство статей дают один способ. Я дам три - и объясню, какой для чего.
Способ 1. Быстрый старт (для новичков)
Этот способ подходит, если вы хотите попробовать Next.js без лишних заморочек.
npx create-next-app@latest my-project
cd my-project
npm run devЧто происходит за кулисами:
Устанавливается React, React-DOM, Next.js.
Настраивается ESLint (проверка кода).
Создаётся папка
appс базовой структурой.
Важно: На вопрос «Would you like to use App Router?» всегда отвечайте Yes. Это будущее фреймворка. Pages Router - устаревший легаси.
Способ 2. Ручная установка (для профи)
Используйте, если хотите полный контроль над зависимостями.
mkdir my-project && cd my-project
npm init -y
npm install next react react-domЗатем откройте package.json и добавьте скрипты:
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start"
}Создайте папку app и внутри - файл page.js:
export default function Page() {
return <h1>Hello Next.js</h1>;
}Теперь запускайте: npm run dev.
Почему этот способ лучше: Вы видите, какие именно пакеты устанавливаются. Это помогает понимать структуру проекта, а не слепо доверять скрипту.
Способ 3. Установка с TypeScript (для серьёзных проектов)
npx create-next-app@latest my-project --typescriptTypeScript - это не «модно», это необходимость в больших проектах. Он ловит 90% ошибок на этапе написания кода, а не в рантайме.
3. Запуск Next.js приложения: что скрывается за командой npm run dev
Когда вы вводите npm run dev, происходит магия:
Turbopack (новый сборщик от Vercel) компилирует ваш код. Он работает в 10 раз быстрее Webpack.
Сервер разработки поднимается на
http://localhost:3000.Hot Module Replacement (HMR) - вы меняете код, и страница обновляется без перезагрузки. Состояние компонентов сохраняется. Это экономит часы разработки.
Что делать, если порт 3000 занят?
Выполните:
npm run dev -- -p 30014. Главный вопрос: Next.js или React - что выбрать?
Этот вопрос я слышу на каждом митапе. Давайте раз и навсегда поставим точку.
Критерий | React (SPA) | Next.js |
|---|---|---|
SEO | ❌ Боты видят пустой div | ✅ Готовый HTML с контентом |
Скорость первой загрузки | ⏳ Медленно (ждём JS) | ⚡ Мгновенно (HTML уже здесь) |
Роутинг | 🔧 Нужен React Router | 📁 Встроенный на основе папок |
Сложность | 🟢 Низкий порог входа | 🟡 Средний (но оно того стоит) |
Когда использовать | Лендинги, админки, SPA | Интернет-магазины, блоги, корпоративные сайты |
Сценарии из жизни
Сценарий 1: Вы делаете личный блог.
Возьмите Next.js. SEO решает всё. Без SSR ваш блог никто не найдёт в поиске.
Сценарий 2: Вы делаете админ-панель для сотрудников.
Там не нужен поисковик. Берите чистый React - он проще и быстрее разрабатывается.
Сценарий 3: У вас уже есть React-проект, и вы хотите его переписать.
Не переписывайте всё сразу. Используйте Next.js только для новых страниц (например, для блога). Остальное оставьте на React. Это называется миграция по частям.
5. App Router и Turbopack: что это и зачем они нужны?
App Router (новая маршрутизация)
Раньше (в Pages Router) структура была жёсткой. Сейчас - гибкая.
app/
├── page.js → Главная (/)
├── about/
│ └── page.js → О нас (/about)
├── blog/
│ ├── page.js → Блог (/blog)
│ └── [slug]/
│ └── page.js → Статья (/blog/hello-world)Что даёт App Router:
Вложенные макеты (layouts).
Серверные компоненты по умолчанию.
Упрощённую работу с данными
fetchс кэшированием).
Главный совет: Используйте 'use client' только тогда, когда это действительно нужно (хуки, события, эффекты). Всё остальное должно быть серверным.
Turbopack (новый сборщик)
Если вы работали с Webpack, вы знаете, что такое боль. Turbopack - это Webpack, переписанный на Rust. Он компилирует код в 700 раз быстрее для больших проектов.
В Next.js 16 Turbopack работает по умолчанию. Дополнительных флагов не требуется.
6. Реальные ошибки при установке (и как их победить)
Эти ошибки я видел сотни раз на Stack Overflow, в GitHub issues и в своей консоли.
Ошибка 1: Error: Cannot find module 'next'
Текст ошибки:
Error: Cannot find module 'next'
Require stack:
- /Users/.../my-project/node_modules/.bin/nextПричина: Вы запускаете next dev, но пакет не установлен.
Решение:
npm install next react react-domПревентивный совет: Всегда проверяйте, что node_modules существует, перед запуском.
Ошибка 2: You are using Node.js x.x.x but Next.js requires Node.js >= 18.17.0
Текст ошибки:
You are using Node.js 16.14.0. For Next.js, Node.js version >= 18.17.0 is required.Причина: Устаревшая версия Node.js.
Решение:
Установите Node.js через официальный сайт.
Или используйте
nvm(менеджер версий):
nvm install 22
nvm use 22Ошибка 3: Port 3000 is already in use
Текст ошибки:
Port 3000 is already in use.Причина: Другой процесс уже слушает порт.
Решение:
1. Найдите процесс:
lsof -i :30002. Убейте его:
kill -9 PID3. Или запустите на другом порту:
npm run dev -- -p 3001Ошибка 4: 'use client' is not allowed in server components
Текст ошибки:
You're importing a component that needs `'use client'` but it's used in a server component.Причина: Вы используете хуки (useState, useEffect) в компоненте без директивы 'use client'.
Решение: В самом верху файла добавьте:
'use client'
import { useState } from 'react';Ошибка 5: Module not found: Can't resolve '@/components/Header'
Текст ошибки:
Module not found: Can't resolve '@/components/Header'Причина: Некорректный путь или отсутствие алиаса.
Решение: Проверьте файл jsconfig.json или tsconfig.json:
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@/*": ["./*"]
}
}
}7. Установка Next.js с дополнительными инструментами
С Tailwind CSS
Tailwind - это CSS-фреймворк, который ускоряет вёрстку в разы.
npx create-next-app@latest my-project --tailwindЕсли проект уже создан, установите вручную:
npm install -D tailwindcss postcss autoprefixer
npx tailwindcss init -pС ESLint и Prettier
Качественный код = меньше багов.
npm install -D eslint prettier eslint-config-nextДобавьте в package.json:
"scripts": {
"lint": "next lint",
"format": "prettier --write ."
}8. Деплой: как запустить Next.js в продакшене
Установка и разработка - это полдела. Самое страшное начинается, когда вы заливаете проект на сервер.
Вариант 1: Vercel (рекомендуемый)
Vercel - это компания, которая создала Next.js. Деплой туда - это два клика.
1. Заливаете код на GitHub.
2. Импортируете репозиторий в Vercel.
3. Vercel автоматически собирает next build) и деплоит проект.
Почему это лучший выбор: Автоматические превью для каждого PR, кэширование на уровне CDN, бесплатный SSL. В 2026 году Vercel добавил поддержку edge-функций для Next.js 16 - это ускоряет ответы API до 50 мс.
Вариант 2: Собственный сервер (VPS)
next build
next startВажно: next start запускает продакшен-сервер, а не режим разработки. Он оптимизирован для высокой нагрузки.
Настройка PM2 (для стабильности):
npm install -g pm2
pm2 start next --name "my-next-app" -- start
pm2 save
pm2 startupВариант 3: Docker
Создайте Dockerfile:
FROM node:22-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM node:22-alpine AS runner
WORKDIR /app
COPY --from=builder /app/.next ./.next
COPY --from=builder /app/node_modules ./node_modules
COPY package*.json ./
EXPOSE 3000
CMD ["next", "start"]Запуск:
docker build -t my-next-app .
docker run -p 3000:3000 my-next-app9. Next.js vs Nuxt.js (для тех, кто пришёл из Vue)
Если вы искали next.js для vue, ответ прост: ваш фреймворк - Nuxt.js.
Сравнение:
Next.js | Nuxt.js | |
|---|---|---|
Фреймворк | React | Vue |
Сборщик | Turbopack | Vite |
SSR | ✅ | ✅ |
Сложность | Средняя | Средняя |
Концепции почти идентичны:
Next.js App Router = Nuxt.js
pages/.Next.js
getStaticProps= Nuxt.jsasyncData.
Вывод: Если вы знаете Next.js, вы сможете освоить Nuxt.js за пару дней, и наоборот.
10. FAQ: ответы на самые частые вопросы (которые не гуглятся)
Вопрос 1: Нужно ли знать React для работы с Next.js?
Ответ: Да, и не просто знать, а понимать хуки, контекст и жизненный цикл. Next.js - это надстройка, а не замена. Без React вы ничего не напишете.
Вопрос 2: Можно ли использовать Next.js без Node.js?
Ответ: Только если вы используете статическую генерацию (SSG) и хостите готовые HTML-файлы. Но в режиме разработки Node.js обязателен.
Вопрос 3: Как удалить Next.js проект?
Ответ: Просто удалите папку. rm -rf my-project. Никаких системных зависимостей Next.js не оставляет.
Вопрос 4: Next.js работает с Express.js?
Ответ: Да, но это избыточно. Next.js уже имеет встроенный сервер. Если нужен кастомный сервер, используйте файл server.js:
const { createServer } = require('http');
const next = require('next');
const app = next({ dev: false });
const handle = app.getRequestHandler();
app.prepare().then(() => {
createServer((req, res) => {
handle(req, res);
}).listen(3000);
});Вопрос 5: Что такое getStaticProps и getServerSideProps?
Ответ: Это методы из Pages Router (устаревшие).
getStaticProps- собирает данные на этапе сборки (для статики).getServerSideProps- собирает данные при каждом запросе (для динамики).
В App Router вместо них используется обычный fetch с настройкой кэширования:
const res = await fetch('https://api.example.com/data', { cache: 'force-cache' });Вопрос 6: Как обновить Next.js до последней версии?
Ответ:
npm install next@latest react@latest react-dom@latestВопрос 7: Можно ли использовать Redux с Next.js?
Ответ: Да, но с нюансами. Используйте Redux Toolkit и оборачивайте приложение в провайдер в файле layout.js. Но в эпоху серверных компонентов Redux становится всё менее актуальным. Рекомендую посмотреть на Zustand или React Context.
Вопрос 8: Почему Next.js такой популярный в 2026 году?
Ответ: Потому что он решает главную проблему React-приложений - SEO и скорость загрузки. В 2026 году Next.js 16 добавил встроенную поддержку React 19 и улучшенное кэширование на edge-уровне. А ещё его поддерживает Vercel, который делает деплой максимально простым.
11. Лучшие практики (чтобы ваш проект не умер через месяц)
Используйте серверные компоненты по умолчанию. Только если нужны события или хуки - добавляйте
'use client'.Кэшируйте данные. Next.js 16 кэширует
fetchпо умолчанию. Не отключайте это без необходимости.Оптимизируйте изображения. Всегда используйте
next/image. Это ускорит сайт в 2 раза.Следите за размером бандла. Используйте
next/dynamicдля ленивой загрузки.Пишите переменные окружения.
.env.local- ваш лучший друг для хранения ключей API.Настройте ESLint и Prettier. Это сэкономит часы на код-ревью.
Используйте
<Head>для SEO. Добавляйте мета-теги на каждую страницу.Делайте резервные копии. Перед обновлением Next.js всегда коммитьте текущую версию.
12. Пример полного рабочего проекта
Создайте минимальный блог на Next.js за 5 минут:
app/page.js
export default function Home() {
return (
<div>
<h1>Мой блог</h1>
<p>Добро пожаловать!</p>
</div>
);
}app/blog/page.js
async function getPosts() {
const res = await fetch('https://jsonplaceholder.typicode.com/posts');
return res.json();
}
export default async function Blog() {
const posts = await getPosts();
return (
<div>
<h1>Статьи</h1>
<ul>
{posts.slice(0, 5).map((post) => (
<li key={post.id}>{post.title}</li>
))}
</ul>
</div>
);
}Запустите: npm run dev - и готово. У вас SSR-приложение с SEO и динамическими данными.
13. Заключение: Next.js - это не сложно. Это просто по-другому
Мы прошли длинный путь. От установки до деплоя, от ошибок до лучших практик. Вы теперь знаете:
Как установить Next.js тремя способами.
Почему порт 3000 может быть занят и как это исправить.
В чём разница между Next.js и React.
Как деплоить приложение на Vercel и свой сервер.
Какие ошибки ждут новичка и как их избежать.
Какие фичи появились в Next.js 16 в 2026 году.
Главный вывод: Next.js решает реальные проблемы. Это не хайп, это эволюция React-разработки. Да, есть порог входа, но он окупается скоростью разработки и качеством конечного продукта.
Комментарии
Чтобы оставить комментарий, войдите в аккаунт.