نسخه 24 از Node.js در تاریخ 6 مه 2025 بهصورت رسمی منتشر شد؛ نسخهای که تمرکز آن بر نوآوری و پایداری بلندمدت است. طبق برنامه، این نسخه در اکتبر 2025 وارد فاز پشتیبانی بلند مدت (LTS) میشود و از همین رو، نسخهای کلیدی برای استفاده در محیطهای تولیدی بهشمار میرود.
در این مقاله، چرخه انتشار Node.js را بررسی میکنیم، مهمترین ویژگیهای جدید آن را مرور کرده و گامهایی که باید برای سازگاری پروژههای فعلی خود با این نسخه برداریم را شرح خواهیم داد.
Node.js از یک مدل نسخهبندی دو مسیره استفاده میکند. نسخههای زوج مانند 20.x و 22.x برای دریافت پشتیبانی بلندمدت (LTS) طراحی شدهاند و تا 30 ماه پشتیبانی میشوند. این نسخهها معمولاً انتخابی امن برای تیمها و پروژههای تولیدی هستند. در مقابل، نسخههای فرد مثل 21.x و 23.x کوتاه مدتاند و بیشتر برای تست ویژگیهای جدید مناسب میباشند، اما برای استفاده در محیطهای واقعی توصیه نمیشوند.
چرخه انتشار Node.js شامل سه مرحله است:
Current (فعلی)
Active LTS (پشتیبانی فعال)
Maintenance LTS (نگهداری امنیتی)
بر اساس برنامه انتشار در مه 2025:
Node.js 23 در مرحلهی Current قرار دارد. این نسخه جدیدترین قابلیتهای جاوااسکریپت و موتور V8 را ارائه میدهد، اما تنها 6 ماه پشتیبانی دارد و ممکن است شامل تغییرات ناسازگار باشد. بنابراین برای محیط تولید مناسب نیست.
Node.js 22.x وارد فاز Active LTS شده، پایدار است و وصلههای امنیتی دریافت میکند. انتخابی مناسب برای پروژههای بلند مدت است.
Node.js 20.x به مرحله Maintenance وارد شده و تنها وصلههای امنیتی دریافت میکند. اگر هنوز از این نسخه استفاده میکنیم، بهتر است آن را ارتقا دهیم.
اگرچه این مدل در ابتدا کمی پیچیده به نظر میرسد، اما هدف آن تأمین پایداری برای کسبوکارها و فضای امن برای آزمایش نوآوریها است. اکنون که نسخه 24 منتشر شده و بهزودی وارد LTS میشود، زمان خوبی است تا قابلیتهای جدید آن را بررسی و پروژههای خود را برای آینده آماده کنیم.
نسخه Node.js 24 یک نسخه اصلی محسوب میشود که شامل مجموعهای از ویژگیهای جدید است؛ از جمله ارتقای موتور V8 به نسخه 13.6 . در ادامه، این تغییرات را در پنج دسته زیر بررسی میکنیم تا بتوانیم بر اساس اولویتهای پروژه خود تصمیمگیری بهتری داشته باشیم:
یکی از مهمترین تغییرات Node.js 24، ارتقای موتور پرقدرت V8 به نسخه 13.6 است. این موتور توسط Google توسعه داده شده و مسئول اجرای کدهای جاوااسکریپت در Node.js است.
قابلیتهای جدید این نسخه عبارتاند از:
Float16Array امکان ذخیرهسازی و پردازش بهینه اعداد اعشاری 16 بیتی را فراهم میکند؛ این قابلیت برای کاربردهایی نظیر یادگیری ماشین، پردازش گرافیکی و محاسبات حساس به حافظه بسیار مفید است.using و await using مدیریت منابعی مانند فایلها و حافظه را سادهتر و امنتر میکند و احتمال memory leak را کاهش میدهد.RegExp.escape ساخت الگوهای RegExp را، بهویژه هنگام استفاده از ورودیهای داینامیک آسانتر و ایمنتر میکند.WebAssembly Memory64 امکان آدرسدهی 64 بیتی را فراهم کرده و اجرای برنامههای بزرگتر را ممکن میسازد.Error.isError بررسی نوع خطاها را سادهتر کرده و کاربردی در برنامههایی با کانتکستهای اجرایی مختلف دارد.این قابلیتها Node.js را به ECMAScript نزدیکتر کرده و باعث بهبود عملکرد، امنیت و تجربه توسعه میشوند.
در نسخه Node.js 24، کلاینت HTTP داخلی یعنی Undici به نسخه 7.0 ارتقا یافته است. این ابزار توسط تیم Node.js طراحی شده و بدون تغییر در API فعلی، عملکرد لایه HTTP را بهینه میکند.
بهبودهای کلیدی شامل:
Undici 7.0 اکنون ابزار قدرتمندتری برای ارتباطات HTTP در برنامههای Node.js است.
Node.js 24 بهطور پیشفرض از پیادهسازی جدیدی به نام AsyncLocalStorage برای AsyncContextFrame استفاده میکند. این تغییر عملکرد را بهبود داده و در عین حال API فعلی را بدون تغییر نگه داشته است.
این ارتقا بهویژه برای پروژههایی که نیاز به ردیابی توزیعشده، لاگگیری یا مدیریت context در درخواستها دارند، بسیار ارزشمند است.
در نسخه Node.js 24، مدل Permission از حالت آزمایشی خارج شده و اکنون یک قابلیت رسمی و پایدار برای استفاده در محیطهای تولیدی است. flag --experimental-permission به --permission تغییر یافته که نشانهای واضح از بلوغ این قابلیت امنیتی است.
مدل Permission در Node.js، پاسخی به چالشهای امنیتی مدرن است که امکان محدود کردن دسترسی به فایل سیستم، شبکه و متغیرهای محیطی را فراهم میکند.
// Run your Node.js application with permissions enabled $ node --permission --allow-fs-read=/allowed/path app.js
برای مثال، پس از اجرای دستور بالا، برنامه تنها اجازه خواندن از مسیر /allowed/path را خواهد داشت و تمامی دسترسیهای دیگر به فایل سیستم بهطور پیشفرض مسدود میشوند.
این تغییر مهم، نقطه عطفی در روند ارتقا امنیت در Node.js محسوب میشود.
در Node.js 24، دیگر مجاز به ارسال آرگومانها به صورت رشتهای به child_process.spawn() و execFile() نیستیم. در عوض، آرگومانها باید به صورت آرایهای و صریح ارسال شوند.
این تغییر به کاهش خطرات Shell Injection کمک کرده و اجرای فرآیندها را یکپارچهتر میکند.
نسخه Node.js 24 با npm 11 منتشر شده و امکانات جدیدی را در اختیار توسعهدهندگان قرار میدهد. این نسخه شامل بهبودهایی در زمینهی عملکرد و امنیت است.
مهمترین تغییرات شامل موارد زیر است:
-- ignore-scripts بر تمام اسکریپتهای lifecycle اعمال میشود و از اجرای کدهای احتمالی ناامن جلوگیری میکند^20.17.0 || >=22.9.0 برای همراستایی بهتر با نسخههای LTS جدید Node.jsنسخه Node.js 24 قابلیت جدیدی برای توسعهدهندگان وب ارائه داده است: آبجکت URLPattern اکنون بهصورت سراسری در دسترس است؛ درست مانند URL. به این ترتیب دیگر نیازی به import کردن آن در فایلهای مسیریابی نیست.
URLPattern مانند یک عبارت منظم برای آدرسهای URL است، اما با سینتکسی سادهتر و خواناتر که نگهداری و استفاده از آن را بسیار آسان میسازد.
// No need to import anything!
const userRoute = new URLPattern({ pathname: '/users/:id' });
// Test a URL
const match = userRoute.exec('https://example.com/users/42');
console.log(match.pathname.groups.id); // Outputs: "42"
این ویژگی برای اعتبارسنجی مسیرهای API بسیار کاربردی است و به توسعهدهندگان امکان میدهد سیستمهای مسیریابی سفارشی ساده ایجاد کنند؛ بدون این که نیاز باشد از کتابخانههای بزرگ استفاده کنند. همچنین در ساخت web scraperهایی که با URLهای ساختیافته کار میکنند نیز بسیار مفید است.
نسخه 24 سیستم تست داخلی Node.js را بهروزرسانی کرده و اجرای خودکار کامل تمام subtestها را ممکن ساخته است.
// before Node.js v24
test('API test suite', async (t) => {
const api = await setupTestAPI();
// Had to remember to await each subtest
await t.test('GET /users', async () => {
const response = await api.get('/users');
deepStrictEqual(response.status, 200);
});
});
// after Node.js v24
test('API test suite', async (t) => {
const api = await setupTestAPI();
// No awaits needed - runner handles it automatically
t.test('GET /users', async () => {
const response = await api.get('/users');
deepStrictEqual(response.status, 200);
});
});
این ویژگی رفتار test runner را طبیعیتر کرده و تجربه تستنویسی را روانتر و قابلاعتمادتر میسازد.
در Node.js 24، تعدادی از APIهای قدیمی منسوخ یا بهطور کامل حذف شدهاند.
url.parse و انتقال به WHATWG URL APIمتد url.parse() اکنون منسوخ شده است. توصیه میشود بهجای آن از WHATWG URL API استفاده کنیم که سازگارتر با استانداردها و امنتر است.
// Deprecated (throws runtime warning)
const parsed = require('url').parse('https://example.com');// alternative
const parsed = new URL('https://example.com');
tls.createSecurePair برای ارتقا امنیت TLSمتد قدیمی tls.createSecurePair بهطور کامل حذف شده است.
// Removed (no longer available)
require('tls').createSecurePair();
// Use TLSSocket instead
new tls.TLSSocket(socket, options);
SlowBufferآبجکت SlowBuffer اکنون رسماً منسوخ شده است. استفاده از آن هشدار زمان اجرا ایجاد میکند.
// Deprecated (use Buffer.allocUnsafeSlow) const slow = new SlowBuffer(10); // Modern alternative const slow = Buffer.allocUnsafeSlow(10);
new در کلاسهای REPL و Zlibاز این پس، ایجاد نمونههایی از کلاسهای REPL یا استفاده از کلاسهای Zlib بدون استفاده از کلمه کلیدی new، بهعنوان رفتاری منسوخ در زمان اجرا شناسایی میشود. تیم توسعهدهنده این تغییر را برای هماهنگی بیشتر با استانداردهای ساخت کلاس در جاوااسکریپت اعمال کرده است.
اگر قصد ارتقا به نسخه 24 را داریم، باید این نکته را بهخاطر داشته باشیم که برخی APIها و الگوهای برنامهنویسی منسوخ شدهاند. این تغییرات ممکن است نیاز به بازبینی و بهروزرسانی کدهای قدیمی داشته باشند، بهویژه اگر پروژه ما شامل موارد زیر باشد:
newchild_process بهصورت رشتهایبرای شناسایی و رفع این موارد، توصیه میشود:
node --trace-deprecation استفاده کنیمبرای ارتقا به این نسخه، میتوانیم از version managerای مانند nvm استفاده کنیم. نصب آن بسیار ساده است:
nvm install 24 nvm use 24
یا اینکه نسخه جدید را مستقیماً از وبسایت رسمی Node.js دانلود و نصب نماییم.
با توجه به اینکه Node.js 24 در اکتبر 2025 وارد مرحله LTS خواهد شد، اکنون زمان مناسبی برای بررسی ویژگیهای جدید آن است. چه در حال نگهداری پروژههای فعلی Node باشیم و چه قصد شروع پروژههای جدید را داشته باشیم، استفاده زودهنگام از این نسخه به ایمنتر و پایدارتر بودن پشته تکنولوژی ما کمک میکند.
Node.js 24 نشاندهنده گامی بزرگ در جهت توسعهی پایدار و مدرن است. این نسخه با تمرکز بر بهبود عملکرد، امنیت و تجربه برنامهنویسی، فرصت مناسبی برای ارتقا پروژهها فراهم کرده است.
اگر در حال توسعه یا نگهداری اپلیکیشنهای Node هستیم، اکنون بهترین زمان برای ارزیابی، تست و آمادهسازی برای نسخه LTS آینده است.