Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Що таке process?». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)**`process`** - глобальний об'єкт Node.js, доступний у будь-якому модулі без імпорту, який дає доступ до PID, версії Node.js, платформи, змінних середовища (`process.env`), аргументів запуску (`process.argv`), потоків stdin/stdout/stderr і подій завершення процесу. **Ключове:** `process.exit(0)` означає успішне завершення, будь-який інший код - помилку.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)Зображення## 1. Що таке `process` > `process` - це об'єкт, наданий Node.js, який описує **поточний процес виконання** JavaScript-коду в середовищі Node.js. Він доступний **будь-де у програмі**, без потреби імпортувати: ```javascript console.log(process); ``` Аналог в інших мовах: - у Python - `sys` + `os`; - у C - `getpid()`, `argv`, `exit()` тощо. ## 2. Основні можливості `process` | Категорія | Що робить | |---|---| | Інформація про процес | PID, версія Node.js, архітектура, платформа | | Змінні середовища | `process.env` | | Аргументи запуску | `process.argv` | | Стандартні потоки | `process.stdin`, `process.stdout`, `process.stderr` | | Завершення процесу | `process.exit()` | | Події життєвого циклу | `beforeExit`, `exit`, `uncaughtException`, `SIGINT` | | Робота з ресурсами | Пам'ять, CPU, uptime, поточний каталог | | Прапорці та опції Node.js | `process.execPath`, `process.execArgv` | ## 3. Основні властивості та методи `process` ### `process.pid` → ID поточного процесу (Process ID) ```javascript console.log(process.pid); // наприклад, 9342 ``` ### `process.version` → Версія Node.js ```javascript console.log(process.version); // v22.8.0 ``` ### `process.platform` → На якій платформі запущено Node.js ```javascript console.log(process.platform); // 'win32' | 'linux' | 'darwin' ``` ### `process.arch` → Архітектура процесора ```javascript console.log(process.arch); // 'x64', 'arm64', 'ia32' тощо ``` ### `process.cwd()` → Поточна робоча директорія ```javascript console.log(process.cwd()); // /Users/tim/projects/app ``` ### `process.env` → Об'єкт усіх **змінних середовища** ```javascript console.log(process.env.NODE_ENV); // 'production' console.log(process.env.PATH); // системний PATH ``` Використовується для конфігурації: ```javascript if (process.env.NODE_ENV === 'production') { console.log('Запущено в продакшені'); } ``` ### `process.argv` → Аргументи командного рядка, з якими запущено Node.js ```javascript node app.js dev 8080 ``` ```javascript console.log(process.argv); // [ '/usr/local/bin/node', '/path/to/app.js', 'dev', '8080' ] ``` Часто використовується для CLI-інструментів. ### `process.memoryUsage()` → Показує, скільки пам'яті споживає застосунок ```javascript console.log(process.memoryUsage()); /* { rss: 24576000, heapTotal: 5464064, heapUsed: 3661728, external: 8704 } */ ``` ### `process.uptime()` → Час (у секундах) з моменту запуску процесу ```javascript console.log(process.uptime()); // 5.312 ``` ### `process.exit([code])` → Завершує виконання процесу ```javascript process.exit(0); // нормальне завершення process.exit(1); // завершення з помилкою ``` Код `0` = успішно, не `0` = помилка (наприклад, використовується в CI/CD чи shell-скриптах). ### `process.on(event, handler)` → Підписка на події процесу Приклади: #### При завершенні програми: ```javascript process.on('exit', (code) => { console.log('Завершення з кодом:', code); }); ``` #### Необроблена помилка: ```javascript process.on('uncaughtException', (err) => { console.error('Необроблена помилка:', err); }); ``` #### При натисканні Ctrl+C: ```javascript process.on('SIGINT', () => { console.log('Процес перервано користувачем'); process.exit(); }); ``` ### `process.stdin`, `process.stdout`, `process.stderr` → Потоки введення/виведення ```javascript process.stdout.write('Введіть ім'я: '); process.stdin.on('data', (data) => { console.log(`Привіт, ${data.toString().trim()}!`); }); ``` Це базовий спосіб працювати з консоллю без зовнішніх бібліотек. ## 4. Приклад використання в реальному Node.js-застосунку ```javascript console.log(`Запущено з PID: ${process.pid}`); console.log(`ОС: ${process.platform}`); console.log(`Node.js: ${process.version}`); console.log(`Пам'ять: ${(process.memoryUsage().heapUsed / 1024 / 1024).toFixed(2)} MB`); process.on('exit', (code) => { console.log(`Процес завершено з кодом ${code}`); }); setTimeout(() => { console.log('Вихід через 2 секунди...'); process.exit(0); }, 2000); ``` ## 5. Чому `process` важливий - Дозволяє взаємодіяти з **операційною системою**; - керує **середовищем і конфігурацією** (через `env`); - дає доступ до **CLI-параметрів**; - керує **потоками введення-виведення**; - дозволяє **відловлювати помилки** й коректно завершувати процес. ## 6. Часті сценарії застосування | Сценарій | Використовується | |---|---| | Конфігурація середовища | `process.env.NODE_ENV` | | CLI-застосунки | `process.argv` | | Налагодження й логування | `process.memoryUsage()`, `process.uptime()` | | Завершення процесу | `process.exit()` | | Обробка помилок | `process.on('uncaughtException', handler)` | | Грейсфул-шатдаун (graceful shutdown) | `process.on('SIGINT', cleanup)` | ## 7. Коротке резюме | Властивість / Метод | Призначення | |---|---| | `process.pid` | ID процесу | | `process.platform` | Платформа ОС | | `process.env` | Змінні середовища | | `process.argv` | Аргументи запуску | | `process.cwd()` | Поточна директорія | | `process.memoryUsage()` | Використання пам'яті | | `process.uptime()` | Час роботи процесу | | `process.exit([code])` | Завершення роботи | | `process.on(event, cb)` | Підписка на події процесу | | `process.stdin / stdout / stderr` | Потоки введення-виведення | ## Одним реченням: > `process` - це глобальний об'єкт Node.js, який дає доступ до інформації про запущений процес, змінних середовища, аргументів командного рядка, потоків введення/виведення й керування завершенням програми.Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.