
Node.js – это среда выполнения JavaScript вне браузера, построенная на движке V8 от Google. Она используется для создания серверных приложений, API и инструментов автоматизации. Основное преимущество Node.js – неблокирующая архитектура, которая позволяет обрабатывать тысячи запросов одновременно без использования потоков в традиционном смысле.
Перед началом установки стоит проверить наличие Node.js и npm (Node Package Manager) через команду node -v и npm -v. Если они не установлены, загрузите их с официального сайта nodejs.org. После этого можно создать первый проект, выполнив в терминале npm init -y для генерации файла package.json, где будут храниться зависимости и настройки проекта.
Для запуска кода достаточно создать файл index.js и добавить минимальный сервер:
const http = require(‘http’);
const server = http.createServer((req, res) => {
res.end(‘Node.js работает!’);
});
server.listen(3000);
Теперь, открыв в браузере http://localhost:3000, можно увидеть ответ сервера. Этот пример демонстрирует базовую структуру приложения и взаимодействие между сервером и клиентом без использования сторонних библиотек.
Дальнейшие шаги включают установку фреймворка Express для удобной работы с маршрутизацией, настройку middleware и изучение системы модулей. Практика с реальными задачами – лучший способ освоить Node.js и понять принципы асинхронного программирования на практике.
Установка Node.js и настройка среды разработки

Для начала работы требуется установить Node.js и менеджер пакетов npm, который входит в стандартный дистрибутив. Проверьте доступность установщиков для вашей системы на официальном сайте nodejs.org.
- Скачайте LTS-версию Node.js (рекомендуется для стабильной работы).
- Запустите установщик и следуйте шагам, оставив параметры по умолчанию.
- После завершения откройте терминал и выполните команды:
node -v– проверка версии Node.jsnpm -v– проверка версии npm
Если используется macOS или Linux, возможна установка через менеджер пакетов:
- macOS:
brew install node - Ubuntu/Debian:
sudo apt install nodejs npm - Fedora:
sudo dnf install nodejs npm
Для удобства работы установите Node Version Manager (nvm), чтобы управлять несколькими версиями Node.js:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash
nvm install --lts
Далее создайте папку проекта и инициализируйте её:
mkdir myapp
cd myapp
npm init -y
Рекомендуемые инструменты для разработки:
- Visual Studio Code – основной редактор с поддержкой Node.js.
- Расширения:
- ESLint – контроль качества кода;
- Prettier – форматирование;
- npm Intellisense – автодополнение пакетов.
Настройте отладку в VS Code: создайте файл .vscode/launch.json со следующим содержимым:
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Запуск приложения",
"program": "${workspaceFolder}/index.js"
}
]
}
После этого можно запускать и отлаживать код прямо из редактора, используя встроенную консоль и точки останова.
Создание первого проекта и инициализация package.json

Для начала работы создайте отдельную папку под проект. Например:
mkdir my-first-node-app
cd my-first-node-app
Инициализация проекта выполняется командой:
npm init -y
Флаг -y автоматически добавляет стандартные значения в package.json. Этот файл фиксирует название проекта, версию, точку входа и зависимости. Пример минимальной структуры после инициализации:
{
"name": "my-first-node-app",
"version": "1.0.0",
"main": "index.js",
"license": "MIT"
}
Создайте главный файл приложения:
touch index.js
Добавьте базовый код для проверки работы Node.js:
console.log("Приложение запущено");
Запуск выполняется командой:
node index.js
npm install express
После установки в package.json появится раздел dependencies, фиксирующий используемые модули:
"dependencies": {
"express": "^4.18.2"
}
Рекомендуется добавить файл .gitignore и исключить папку node_modules:
node_modules/
Теперь структура проекта выглядит так:
index.js– точка входаpackage.json– метаданные и зависимостиnode_modules/– установленные пакеты.gitignore– настройки для Git
После этих шагов проект готов к дальнейшему развитию и добавлению функциональности.
Работа с модулями и импорт внешних библиотек

Для подключения модулей используются два подхода: CommonJS и ECMAScript Modules (ESM). Первый применяет функцию require(), второй – оператор import. В новых проектах предпочтительно использовать ESM, так как он совместим с современным JavaScript.
| Тип модуля | Синтаксис импорта | Экспорт из файла |
|---|---|---|
| CommonJS | const fs = require('fs'); |
module.exports = функция; |
| ESM | import fs from 'fs'; |
export default функция; |
Чтобы использовать ESM, добавьте в package.json поле "type": "module". Без этого Node.js по умолчанию ожидает CommonJS.
Встроенные модули, такие как fs, path, http, доступны без установки. Для сторонних библиотек используется npm. Например, для установки Express выполните:
npm install express
После установки можно импортировать библиотеку:
import express from 'express';
const app = express();
Рекомендуется создавать отдельный каталог modules/ или lib/ для пользовательских модулей. Каждый модуль должен решать одну задачу: работа с БД, обработка запросов, логирование и т.д. Это облегчает тестирование и повторное использование кода.
Чтобы экспортировать несколько элементов, применяйте именованный экспорт:
export function connectDB() {}
export function closeDB() {}
И импортируйте их так:
import { connectDB, closeDB } from './db.js';
Используйте относительные пути (./ или ../) для локальных модулей и прямые имена для внешних пакетов. Избегайте циклических зависимостей – они приводят к ошибкам и некорректной инициализации.
Чтение и запись файлов с использованием модуля fs

Для работы с файлами в Node.js используется встроенный модуль fs. Он позволяет читать, записывать и изменять файлы синхронно и асинхронно. Асинхронные методы предпочтительнее, так как не блокируют поток выполнения.
Чтобы прочитать файл асинхронно, используйте fs.readFile. Пример:
const fs = require('fs');
fs.readFile('example.txt', 'utf8', (err, data) => {
if (err) throw err;
console.log(data);
});
Для синхронного чтения применяется fs.readFileSync. Он возвращает содержимое файла или выбрасывает ошибку, если файл не найден:
const fs = require('fs');
const data = fs.readFileSync('example.txt', 'utf8');
console.log(data);
Запись данных в файл выполняется с помощью fs.writeFile. Этот метод создаёт файл, если его нет, или перезаписывает существующий:
fs.writeFile('output.txt', 'Пример текста', 'utf8', (err) => {
if (err) throw err;
console.log('Файл успешно записан');
});
Синхронная запись доступна через fs.writeFileSync. Используйте её для небольших файлов или в скриптах, где блокировка потока не критична:
fs.writeFileSync('output.txt', 'Пример текста', 'utf8');
Для добавления данных в существующий файл применяется fs.appendFile или fs.appendFileSync. Этот метод сохраняет текущий контент и добавляет новые данные в конец:
fs.appendFile('output.txt', '\nДополнительная строка', 'utf8', (err) => {
if (err) throw err;
console.log('Данные добавлены');
});
При работе с большими файлами рекомендуется использовать потоки fs.createReadStream и fs.createWriteStream, чтобы избежать загрузки всего файла в память одновременно:
const readStream = fs.createReadStream('large.txt', 'utf8');
const writeStream = fs.createWriteStream('copy.txt');
readStream.pipe(writeStream);
Всегда указывайте кодировку при чтении и записи текстовых файлов, иначе данные будут возвращаться в виде Buffer. Для обработки ошибок используйте блоки try/catch для синхронных операций и проверку err в асинхронных колбэках.
Создание простого HTTP-сервера на Node.js
Для создания HTTP-сервера в Node.js используется встроенный модуль http. Он позволяет принимать запросы и отправлять ответы без сторонних библиотек.
Создайте файл, например server.js, и импортируйте модуль: const http = require('http');
Определите сервер с помощью http.createServer(). Функция принимает два параметра: объект запроса req и объект ответа res. Пример базового кода:
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Привет, Node.js!');
});
Установите порт для сервера. Обычно используют 3000, чтобы избежать конфликтов с системными портами: const PORT = 3000;
Запустите сервер методом listen и добавьте обратный вызов для уведомления об успешном старте:
server.listen(PORT, () => {
console.log(`Сервер запущен на порту ${PORT}`);
});
После запуска сервера откройте браузер и перейдите по адресу http://localhost:3000. Должно отобразиться сообщение Привет, Node.js!.
Для обработки разных маршрутов проверяйте свойство req.url. Например, можно возвращать разные ответы для / и /about. Всегда завершайте ответ вызовом res.end(), иначе соединение останется открытым.
Рекомендуется использовать console.error() для логирования ошибок и обрабатывать исключения через process.on('uncaughtException'), чтобы сервер не падал при критических ошибках.
Этот подход обеспечивает быстрый старт и понимание принципов работы HTTP в Node.js без подключения фреймворков.
Обработка запросов и отправка ответов клиенту
В Node.js для работы с HTTP-запросами используется модуль http. Основной объект – request, содержит данные запроса: метод (GET, POST и др.), URL и заголовки. Объект response позволяет формировать ответ клиенту.
Для чтения данных POST-запроса применяют событие ‘data’ на объекте request. Данные собираются в буфер и обрабатываются после события ‘end’:
Пример:
const http = require(‘http’);
const server = http.createServer((req, res) => {
if (req.method === ‘POST’) {
let body = »;
req.on(‘data’, chunk => { body += chunk; });
req.on(‘end’, () => {
res.writeHead(200, {‘Content-Type’: ‘text/plain’});
res.end(‘Данные получены: ‘ + body);
});
} else {
res.writeHead(200, {‘Content-Type’: ‘text/plain’});
res.end(‘Используйте POST-запрос’);
}
});
server.listen(3000);
Для отправки ответа важно указывать правильный Content-Type и код статуса. Например, res.writeHead(404, {‘Content-Type’: ‘application/json’}) позволяет вернуть JSON с ошибкой.
Node.js поддерживает потоковую отправку данных через res.write(), что полезно для больших ответов или постоянных соединений (SSE, WebSocket).
При работе с URL рекомендуется использовать модуль url для разбора query-параметров. Это позволяет извлекать данные из GET-запросов без ручного парсинга строки запроса.
Важно закрывать соединение методом res.end(). Без него клиент не получит полный ответ, а сервер оставит сокет открытым, что может привести к утечкам ресурсов.
Использование npm-скриптов для автоматизации задач

npm-скрипты позволяют запускать команды напрямую из файла package.json, избавляя от необходимости создавать отдельные shell-файлы. В разделе «scripts» можно указать любые команды, которые обычно выполняются в терминале.
Пример добавления скриптов:
"scripts": { "start": "node index.js", "build": "tsc", "test": "jest" }
Для запуска используется команда npm run имя_скрипта. Например, npm run build скомпилирует проект на TypeScript. Скрипт start можно запускать через npm start, это стандартная практика для Node.js-приложений.
npm-скрипты поддерживают цепочки команд через && и параллельное выполнение через & (Unix) или использование пакетов вроде concurrently. Это позволяет объединять сборку, тестирование и линтинг в одну команду:
"dev": "npm run lint && npm run build && npm run test"
Для глобальных инструментов достаточно указать имя пакета, установленного в devDependencies. npm автоматически ищет бинарные файлы в ./node_modules/.bin. Это исключает необходимость установки инструментов по всему компьютеру.
Совет: используйте npm-скрипты для регулярных задач – компиляции, тестирования, очистки временных файлов. Это упрощает настройку проекта для новых разработчиков и делает процессы повторяемыми без дополнительных команд.
Дополнительно можно создавать скрипты с аргументами, передавая их через --. Например: npm run build -- --watch активирует режим наблюдения у TypeScript-компилятора.
npm-скрипты – ключевой инструмент для стандартизации рабочих процессов в Node.js, минимизируя ручное вмешательство и обеспечивая контроль над последовательностью задач.
Вопрос-ответ:
Что такое Node.js и чем он отличается от обычного JavaScript в браузере?
Node.js — это среда выполнения JavaScript вне браузера. Она позволяет запускать код на сервере, работать с файлами, создавать серверы и обрабатывать сетевые запросы. Основное отличие от браузерного JavaScript в том, что Node.js предоставляет доступ к файловой системе, сетевым интерфейсам и операционной системе, чего в браузере нельзя делать по соображениям безопасности.
Как установить Node.js на компьютер и проверить корректность установки?
Для установки Node.js нужно зайти на официальный сайт и скачать версию для вашей операционной системы. После установки откройте терминал или командную строку и введите команду node -v — она покажет установленную версию. Также можно проверить npm (менеджер пакетов, который идет вместе с Node.js) командой npm -v. Если обе команды возвращают номер версии, установка прошла успешно.
Как создать простой сервер на Node.js для обработки HTTP-запросов?
Для создания базового сервера можно использовать встроенный модуль http. Сначала подключаем модуль через const http = require('http');. Далее создаем сервер с помощью http.createServer((req, res) => { ... }), где req — объект запроса, а res — объект ответа. Внутри функции можно задавать заголовки и отправлять данные через res.write() и res.end(). В конце сервер запускается на определенном порту командой server.listen(3000). После этого можно открыть браузер и перейти по адресу http://localhost:3000, чтобы увидеть результат.
Что такое npm и зачем он нужен при работе с Node.js?
npm — это менеджер пакетов для Node.js. Он позволяет добавлять сторонние библиотеки и инструменты в проект без необходимости скачивать их вручную. Например, с помощью команды npm install express можно установить библиотеку для создания серверов. Кроме установки, npm помогает управлять версиями пакетов, удалять ненужные и хранить информацию о зависимостях проекта в файле package.json. Благодаря этому код становится более структурированным и легко переносимым между машинами.
Как отлаживать код на Node.js и находить ошибки?
Для отладки можно использовать встроенный режим Node.js: запустите скрипт с флагом --inspect, например node --inspect index.js, и откройте Chrome DevTools. Также полезно добавлять console.log() для отслеживания значений переменных. Если приложение выбрасывает ошибки, внимательно читайте сообщения в терминале: там указывается файл, строка и тип ошибки. Для больших проектов рекомендуется использовать отладчики в редакторах кода, например Visual Studio Code, где можно ставить точки останова и пошагово просматривать выполнение программы.
Что нужно установить, чтобы начать писать код на Node JS?
Для работы с Node JS достаточно скачать официальную версию с сайта Node.js. После установки вы получите интерпретатор JavaScript, который запускается вне браузера, и менеджер пакетов npm для управления библиотеками. Рекомендуется проверить установку командой node -v в терминале — она покажет текущую версию Node. Кроме того, полезно иметь текстовый редактор с подсветкой синтаксиса, например Visual Studio Code, чтобы было удобнее создавать файлы с кодом.
Как создать простой сервер на Node JS?
Самый простой способ — использовать встроенный модуль http. Нужно подключить его через require('http') и вызвать http.createServer, передав функцию, которая будет обрабатывать запросы и отправлять ответы. Например, можно отправлять текст «Привет, мир!» на все запросы. После создания сервера нужно указать порт методом listen. После запуска кода через терминал и перехода в браузере по адресу http://localhost:3000 вы увидите свой ответ. Это базовый пример, который помогает понять структуру серверного кода и как Node JS работает с запросами.
