Node.js Recipes
3.23K subscribers
174 photos
7 videos
1 file
622 links
По буднях нотатки по #Nodejs розробці, по вихідним огляди конференцій та доповідей (с) @galkin_nikita
Download Telegram
🚀 Вийшов реліз Node.js v22.15.0
#nodejs_api

У цьому мінорному оновленні є два важливі моменти, на які варто звернути увагу.

1️⃣ Оновлення бази часових поясів: tzdata 2024b → 2025a
Деталі змін у реліз-нотах tzdata 2025a.
Якщо ваш застосунок має бізнес-логіку, що залежить від таймзон, це оновлення може стати breaking change. Щоб уникнути подібних ризиків у майбутньому, краще використовувати system-ICU, щоб оновлювати таймзони незалежно від оновлень Node.js.

2️⃣ Зʼявився новий метод process.execve() — системний виклик, який повністю замінює поточний процес на новий, зберігаючи той самий PID. Приклад:
console.log('Before execve pid:', process.pid);
try {
process.execve('/bin/sh', ['sh', '-c', 'echo After execve pid: $$']);
} catch (err) {
console.error('execve failed:', err);
}

Що це означає для Node.js розробників?
🐳 Мінімалістичний init-процес на JS у Docker-контейнерах: наприклад, можна спочатку отримати секрети з AWS Secrets Manager, а потім запускати основну програму, як треба по 12 Factor.
🔁 Hot-reload без втрати PID: перезапуск застосунку без його зупинки — актуально для IoT-пристроїв або embedded-систем.
⚠️ Новий вектор атак: тепер можливе підміщення логіки без зміни PID, що вимагає додаткової уваги до безпеки.
👍42🐳31
Як і навіщо перевіряти, що код запущено під потрібною версією Node.js?
#nodejs_api

Використання нових можливостей nodejs або сучасного синтаксису мови може призвести до того, що ваш застосунок не запуститься на застарілій версії Node.js. Тому варто перевіряти версію Node.js і кидати необроблену помилку, якщо код запущено під неправильною версією. Робити це потрібно у файлі входу (entry point), з якого запускається все застосування. Таким чином ви гарантуєте, що середовище, в якому розробляється ваш код і яке буде використовуватися на інших оточеннях чи комп'ютерах інших розробників, буде те саме.

Приклад коду:
const expectedVersion = '22.16.0';
if (process.versions.node !== expectedVersion) throw new Error(`App requires node.js version ${expectedVersion}`);

Під час оновлення версії Node.js ми змінюємо expectedVersion у коді, Dockerfile і GitHub actions.

PS Це повтор рецепту від 2021 року.
👍354