Установка и первый сервер
Чтобы начать, нужен проект Node.js с установленным пакетом express. Сервер — это обычный JavaScript-файл, который создаёт приложение и начинает слушать порт: номер, по которому браузер к нему обращается.
Создание проекта
Проверьте версию Node.js — нужна 22 или новее — и создайте папку проекта:
node -v
mkdir blog
cd blog
npm init -y
npm install expressnpm init -y создаёт файл package.json, а npm install express скачивает Express в папку node_modules и записывает его в зависимости.
Включаем ES-модули
Откройте package.json и добавьте поле type, чтобы Node.js понимал import и export:
{
"name": "blog",
"type": "module",
"dependencies": {
"express": "^5.1.0"
}
}Остальные поля, которые создал npm init, можно оставить как есть.
Первый сервер
Создайте файл src/server.js:
// src/server.js
import express from 'express';
const app = express();
const PORT = 3000;
app.get('/', (req, res) => {
res.send('Привет от блога!');
});
app.listen(PORT, (error) => {
if (error) {
throw error;
}
console.log(`Сервер запущен: http://localhost:${PORT}`);
});express() создаёт приложение, app.get() добавляет маршрут для главной страницы, а app.listen() запускает сервер. Если порт занят, функция получит ошибку в первом аргументе.
Запуск
node src/server.jsВ терминале появится строка «Сервер запущен: http://localhost:3000». Откройте этот адрес в браузере — на странице будет «Привет от блога!». Остановить сервер можно сочетанием клавиш Ctrl+C.
Перезапуск при изменениях
Node.js сам не замечает правки в коде: после каждого изменения сервер нужно перезапускать. Флаг --watch делает это автоматически:
node --watch src/server.jsУдобно записать обе команды в раздел scripts файла package.json:
{
"scripts": {
"dev": "node --watch src/server.js",
"start": "node src/server.js"
}
}Теперь при разработке запускайте npm run dev, а на сервере — npm start.
Частая ошибка
Если забыть "type": "module", Node.js остановится с ошибкой Cannot use import statement outside a module. Добавьте поле в package.json — или, если проект старый, переименуйте файлы в .mjs. В этом курсе везде используется вариант с полем type.