خطای 503 در اجرای اپ نود جی اس

خطای 503 در اجرای اپ نود جی اس

خطای 503 در اجرای اپ نود جی اس

error 503 in node js

توسط : admin
ممکن است تا به حال پس از بارگذاری اپ نود جی اس بر روی هاست لینوکس پس از اجرا ی اپ با خطای 503 مواجه شده باشید . با ما باشید تا به بررسی این موضوع بپردازیم .

 

اگر شما یک توسعه دهنده نود جی اس باشید ، قطعا پس از اتمام کار اقدام به بارگذاری محتویات اپ خود به هاست نموده اید . اخیرا در هاست های موجود در ایران که ارائه دهنده این سرویس هستند ممکن است پس از بارگذاری با خطای 503 مواجه شده باشید . در این مقاله ما با چند عاملی که باعث بروز خطای 503 در اجرای اپ نود جی اس میشوند ، آشنا میشویم .

ممکن است هر کدام از دلایل زیر سبب بروز خطای 503 در اجرای اپ گردند .

  1. عدم نصب بودن ماژولی که در برنامه require کرده اید
  2. عدم موجود بودن فایلی که در برنامه require کرده باشید
  3. عدم export ماژول یا متد داخلی که در فایلی دیگر فرخوانی کرده اید
  4. پر بودن پورت مورد استفاده
  5. استفاده از متغیرهای محیطی یا Environment Variable

 

موارد 1 تا 4 نیازی به راهنمایی خاصی ندارند ، چرا که همانطور که از شرح آنها مشخص است باید بررسی کنید که ماژولها یا فایل ها یا متدهای مورد استفاده حتما نصب شده یا در لیست فایلها موجود باشند و یا در قسمت خروج ماژول آورده شده باشند .

module.exports = {
//class or methods
};

 

خطای ایجاد شده در مورد شماره 5  در این مقاله مد نظر ما است .

هاست نود جی اس نسبت به بقیه هاست های موجود در ایران و حتی جهان نسبتا جدید هستند و اگر جستجوی ساده ای در اینترنت بنمائید متوجه خواهید شد تعداد  ارائه  دهندگان این سرویس در ایران  نسبت به بقیه سرویس ها بسیار کمتر است . که تقریبا تمامی این هاست های موجود بر پایه سیستم عامل لینوکس و با استفاده از سی پنل ارائه میگردند .

 

اخیرا در چند ماه گذشته پس از بروز رسانی سرویس نود جی اس در cpanel  ، برخی از اپ های نود جی اس که قبلا به راحتی اجرا میشند به طور ناگهانی با خطای 503 مواجه شدند . که متاسفانه علت این موضوع شناخته شده نبود . همینطور که برای سایتهای ما نیز این مشکل رخ داد و ما به ناچار مجبور شدیم هاست وب سایت های خودمان به یکی از ارائه دهندگان این سرویس واقع در آلمان که هنوز اقدام به بروز رسانی cpanel نکرده بود، منتقل کنیم .

 

پس از بررسی های بسیار زیاد در نهایت ایراد کار پیدا شد . موضوع در اصل پیچیده نبود !!!

 

علت بروز خطای 503 در اپ نود جی اس :

علت بروز این خطا استفاده از متغیرهای محیطی یا Environment variables  بود .

 

Environment variables چیست ؟

متغیرهای محیطی مکانی برای نگه داری اطلاعاتی است که به خاطر موارد امنیتی نباید مستقیما در فایلهای اپ نود جی اس وارد شوند ، مانند  کانکشن استرینگ دیتا بیس ، کدهای رمزگذاری ، رمز ایمیل و ... . که این متغیرها به خاطر اینکه تحت حفاظت سیستم عامل هستند از دسترس هکرها در امان خواهند بود . بنابراین استفاده از آنها واجب میباشد .

 

چرا خطا ؟

در نسخه قبلی سرویس نود جی اس بر روی هاست سی پنل اگر قصد داشیم از متغیر محیطی استفاده کنیم ، کافی بود این متغیر در طبق تصویر زیر در اپ نود وارد کنیم .

افزودن متغیر محیطی در نود جی اس

 

و سپس با استفاده از دستور زیر در اپ به این مقادیر دسترسی پیدا کنیم . به طور مثال :

const crp = process.env.CRYPTO_CODE;

 

ولی پس از بروز رسانی نسخه ارائه دهنده سی پنل عملا این متغیرها از دسترس نود جی اس بر روی هاست خارج شدند ، که این امر سبب میشد اپ اجرا نشده و در صورتیکه قصد اتصال به سرویس api را داشتید با خطای 503 مواجه میشدید . در حالیکه در سمت سیستم لوکال یا localhost اپ به درستی اجرا میشود .

 

راه حل ؟

راه حل بسیار ساده است . ماژول زیر را بر روی اپ خود نصب کنید .

npm in dotenv

 

سپس در فایل اصلی پروژه که معمولا با نام app.js یا server.js هست توسط دستور زیر وارد کنید تا تنظیمات مورد نیاز را برای برنامه شما انجام دهد .

const dotenv = require("dotenv");
dotenv.config();

 

و در ریشه اصلی پروژه که فایل اجرایی نیز در اون مسیر هست فایلی با نام زیر ایجاد کرده :

.env

 

و درون این فایل متغیرهای مورد نیاز خودتون رو به صورت newline یعنی در هر خط یک متغیر به صورت زیر تعریف کنید .

CRYPTO_CODE = XXXXX
MONGOURI_NILOOTECH	= XXXXXXXXX
REACT_APP_API_URL = XXXXXXX

 

فراموش نکنید علامت کاما یا سمیکولن یا هر نوع علامت دیگری رو نباید در انتهای متغیرها استفاده کنید .

 

و اکنون میتونید پروژه خودتون رو تست کنید و ببینید که نود جی اس به راحتی متغیرهایی که با دستور process.env استفاده کردید ، شناسایی میکند . ضمنا نیازی به تعریف این متغیر ها  در قسمت  Environment variables در سی پنل نیست .

 

امیدوارم این آموزش به شما در رفع این خطا کمک کرده باشه . خوشحال میشم از نظرات شما در زیر این پست مطلع بشم .

 

 

نظرات :

در عرض چند دقیقه برای ایجاد حساب

کاربری خود اقدام کنید


اکنون حساب کاربری خود را ایجاد کنید!


ایجاد حساب کاربری

با ثبت نام در نیلوتک از آخرین بروز رسانی های آموزش ها و مقالات سایت مطلع شوید