
در این مقاله
Node.js 26 در ۲۸ اکتبر ۲۰۲۶ با نسخه 26.13.0 وارد شاخه LTS شد. اگر برنامه Next.js، API نود یا Worker شما هنوز روی نسخه دیگری اجرا میشود، این خبر فرصت مناسبی برای بررسی برنامه ارتقاست؛ نه دلیلی برای عوضکردن فوری محیط اصلی. LTS یعنی شاخهای با برنامه پشتیبانی بلندمدت، نه تضمین اینکه همه وابستگیهای پروژه شما بدون تغییر روی آن کار کنند. این راهنما مسیر مهاجرت قابل بازگشت را از ثبت وضعیت فعلی تا آزمون نسخه زنده توضیح میدهد.
در پایان باید بتوانید درباره ارتقا تصمیم مستند بگیرید: نسخه فعلی چه وضعیتی دارد، کدام بستهها حساساند، چه آزمونهایی لازم است و اگر انتشار موفق نبود چگونه نسخه قبلی را اجرا کنید. برای استقرار میتوانید از هاست Next.js پاستا یا سرویس کانتینری استفاده کنید؛ اما وجود یک نسخه در خبر رسمی، به معنی انتخاب پیشفرض آن در همه مسیرهای ساخت پاستا نیست. نسخه نهایی را در خروجی ساخت و داخل فرایند واقعی برنامه بررسی کنید.
تازهترین خبر دقیقاً چیست؟
طبق یادداشت رسمی Node.js 26.13.0، این انتشار انتقال شاخه ۲۶ به LTS با نام Lithium است و نسبت به نسخه قبلی، تغییرات عملکردی تازهای جز دادههای مربوط به وضعیت انتشار ندارد. بنابراین اگر ادعای سرعت بیشتری مطرح میکنیم باید تفاوت نسخههای واقعی و پروژه مورد آزمایش را مشخص کنیم. تغییر برچسب Current به LTS بهخودیخود نشان نمیدهد برنامه شما چند درصد سریعتر شده یا مصرف حافظه آن کاهش پیدا کرده است.
برای وضعیت شاخههای دیگر به جدول رسمی انتشارهای Node.js مراجعه کنید. گاهی ماندن موقت روی یک شاخه پشتیبانیشده، تا زمان آمادهشدن افزونه ضروری پروژه، تصمیم مناسبتری است. در مقابل، عقبانداختن بیزمان ارتقا روی شاخه پایانعمر ریسک نگهداری ایجاد میکند. تصمیم را با دو تاریخ ثبت کنید: پایان پشتیبانی نسخه فعلی و مهلت داخلی اجرای آزمون مهاجرت. «بعداً درست میکنیم» برنامه ارتقا نیست.
اول وضعیت واقعی پروژه را ثبت کنید
شماره Node روی لپتاپ ممکن است با محیط ساخت و محیط اجرای سرویس متفاوت باشد. هر سه را بررسی کنید و نسخه مدیر بسته، فایل قفل، چارچوب و معماری پردازنده را کنار آن بنویسید. اگر پروژه از چند سرویس تشکیل شده، Worker و زمانبندیها را هم از قلم نیندازید. ممکن است صفحه اصلی روی Node جدید درست کار کند اما Worker پردازش تصویر به کتابخانه بومی قدیمی وابسته باشد. یک فهرست کوتاه از ورودیهای ساخت، بازتولید مشکل را بعداً بسیار سادهتر میکند.
node --version
npm --version
node -p 'JSON.stringify({node:process.versions.node,arch:process.arch,platform:process.platform})'
npm pkg get engines packageManager scripts
npm ls --depth=0
خروجی کامل فهرست بستهها یا متغیرهای محیطی را در تیکت عمومی منتشر نکنید؛ ممکن است نام بسته خصوصی یا اطلاعات پروژه در آن باشد. برای گزارش ارتقا معمولاً نسخهها، نام آزمون و پیام خطای پاکسازیشده کافی است. در راهنمای CI/CD پروژه Node.js میتوانید مسیر ساخت و انتشار را منظم کنید. مهم این است که نتیجه آزمایش به یک commit و مجموعه وابستگی مشخص مربوط باشد، نه محیطی که در طول کار بیصدا تغییر کرده است.
سازگاری Next.js را از روی نسخه نصبشده بخوانید
حداقل نسخه Node برای هر انتشار Next.js و بعضی قابلیتهای آن ممکن است متفاوت باشد. مستند همان نسخه، مقدار engines و هشدارهای ابزار ساخت را بخوانید. فقط اینکه Node جدیدتر از حداقل است کافی نیست؛ یک بسته جانبی، ابزار تست یا افزونه ساخت ممکن است هنوز محدودیت داشته باشد. بهتر است ابتدا Runtime را با همان نسخه فعلی Next.js آزمایش کنید و ارتقای بزرگ چارچوب را، مگر در صورت وابستگی ضروری، در تغییر جدا انجام دهید تا علت خطا قابل تشخیص بماند.
اگر از مسیر استقرار Next.js در ایران استفاده میکنید، رفتار App Router، مسیرهای API، پردازش تصویر، خروجی ساخت و متغیرهای زمان اجرا را بررسی کنید. بعضی مقادیر عمومی هنگام build وارد فایل نهایی میشوند و تغییر آنها پس از ساخت کافی نیست. همچنین اجرای یک وبسرور و یک Worker در فرایند نامشخص، مشکل ارتقا را مبهم میکند؛ هر سرویس باید فرمان و وضعیت مستقل قابل بررسی داشته باشد.
نسخه را صریح و بازتولیدپذیر انتخاب کنید
برای آزمایش، نسخه هدف را در ابزار مدیریت Runtime یا ایمیج Docker مشخص کنید. فایل engines یک قرارداد سازگاری است، اما همه سامانهها آن را الزاماً بهعنوان انتخاب دقیق Runtime اجرا نمیکنند. بعد از ساخت، نسخه واقعی را بخوانید. از برچسب latest برای انتشار حساس استفاده نکنید؛ چون ممکن است ساخت فردا بدون تغییر کد برنامه، Runtime متفاوتی دریافت کند. اگر ایمیج را با digest قفل میکنید، برای دریافت وصله امنیتی هم فرایند بهروزرسانی منظم لازم دارید.
{
"engines": {"node": ">=26.13.0 <27"},
"scripts": {
"start": "node server.mjs",
"test": "node --test"
}
}
این نمونه برای یک سرویس ساده است، نه فایل آماده جایگزینی package.json پروژه شما. اگر Next.js دارید، اسکریپتهای ساخت و اجرای همان پروژه را حفظ کنید. تغییر engines نباید بهانه حذف فایل قفل یا نصب دوباره بیضابطه همه بستهها شود. نصب تمیز وابستگیها را در محیط آزمایش با فایل قفل موجود انجام دهید و تغییرات قفل را جدا بررسی کنید. فایل حساس تنظیمات رجیستری یا توکن نصب بسته نیز نباید وارد لایه عمومی ایمیج شود.


نظرات کاربران (۰)
هنوز نظری ثبت نشده است. اولین نفر باشید.