راهنمای رفع خطای ENOENT در نود جی اس (Nodejs Enoent eror)

راهنمای رفع خطای ENOENT
در پارس وب سرور شما میتوانید به راحتی پروژه های خود را در بخش nodejs application که به صورت اختصاصی برای سی پنل توسط شرکت پارس وب سرور طراحی و اضافه شده است، راه اندازی کنید. درصورت نیاز از “راهنمای راه اندازی پروژه نود جی اس” استفاده کنید.
امکان راه اندازی پروژه های نود جی اس، بر روی هر دو سرویس هاست نود جی اس و هاست پایتون امکان پذیر میباشد و هر دو سرویس دارای امکانات مشابهی هستند.
شما با تهیه هر کدام از دو سرویس، میتوانید پروژه های پایتون و نود جی اس را همزمان راه اندازی کنید. همین طور شما میتوانید به راحتی هاست خود را از شرکت ها دیگر به هاست های پارس وب سرور انتقال دهید.
انتقال اطلاعات به طور کامل خواهد بود و ایمیل های شما هم به بدون مشکل و به صورت کامل منتقل خواهد شد. برای انتقال میتوانید از طریق ارسال تیکت به بخش پشتیبانی ، درخواست خود را مطرح کنید تا همکاران بخش فنی روند کار را با شما هماهنگ کنند.
بعد از اینکه پروژه های نود جی اس خود را راه اندازی کردید، با استفاده از دستور :
pm2 logs yourdomain.com
امکان مشاهده لاگ پروژه و در صورت وجود خطا، مشاهده خطای پروژه در ترمینال وجود دارد.
نکته: به جای yourdomain.com نام دامنه یا ساب دامنه پروژه را باید وارد کنید.
بررسی و رفع خطای ENOENT
یکی از رایج ترین ارورهای نود جی اس که در ترمینال مشاهده میشود، ارور ENOENT میباشد. عبارت ENOENT مخفف اصطلاح Error NO ENTry (or Error NO ENTity) میباشد و به این معنی هست که فایل یا فولدر مورد نظر، طبق مسیردهی موجود در پروژه وجود ندارد و فایل و فولدر مورد نظر پیدا نشده است. این مشکل عموما به دلیل اشتباه در مسیر دهی فایل ها و فولدرها پیش میآید.
با توجه به اینکه در مسیردهی لینوکس علامت نقطه (.) به معنی دایرکتوری فعلی میباشد، در صورتی که این نکته در نظر گرفته نشود، ممکن است در مسیردهی اشتباه پیش آید و با خطای ENOENT در ترمینال مواجه شویم.
خطای نمایش داده شده در ترمینال ممکن است خطایی مشابه با متن پایین باشد :
npm ERR! code ENOENT
npm ERR! syscall open
npm ERR! path /home/username/project/package.json
npm ERR! errno -2
npm ERR! enoent ENOENT: no such file or directory, open '/home/username/project/package.json'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent
npm ERR! A complete log of this run can be found in:
npm ERR! /home/username/.npm/_logs/2023-09-30T07_09_59_250Z-debug-0.log
مشخصا در کدهای ارور بالا، فایل package.json در روت اصلی هاست موجود نیست.
این مورد ممکن است چند علت داشته باشد :
احتمال دارد پروژه به درستی راه اندازی نشده باشد و یا اینکه مسیردهی در پروژه به درستی اجرا نشده است و فایل مورد نظر در مسیر معرفی شده موجود نیست. البته ممکن است گاهی غلط املایی و یا جا افتادن یک کاراکتر و یا اضافه شدن یک کاراکتر به آدرس فایل و یا فولدر باعث شود دسترسی به هاست قطع شود.
همینطور در صورت وجود ارور در ترمینال، خطای نمایش داده شده در فایلی که که شامل تاریخ و ساعت ایجاد لاگ میباشد در مسیر npm/_logs
ذخیره میشود که برای بررسی بیشتر، میتوانید این لاگ را دانلود و خطاهای پروژه را بررسی بفرمایید. عموما ممکن است با تصحیح نام فایل ها و فولدرها و استاپ و استارت کردن پروژه، مشکل پروژه رفع شده و پروژه ران شود.
نکته: در صورتی که پروژه ران نشد و خطا پا برجا بود، میتوانید با ارسال تیکت به بخش پشتیبانی، رفع مشکل را پیگیری بفرمایید .
در پروژههای nuxt، اگر با این خطا مواجه شدید برای رفع این خطا میتوانید یک متغیر محیطی به نام LOCALHOST با مقدار 0.0.0.0 ایجاد کنید و سپس پروژه را استاپ و استارت کنید و سپس مجدد پروژه را تست کنید. در اکثر مواقع با این تغییر مشکل رفع خواهد شد و پروژه در دسترس قرار میگیرد.
سایر خطاهای مهم نود جی اس که ممکن است در ترمینال مشاهده شود
- ECONNRESET : این خطا زمانی رخ میدهد و نمایش داده میشود که ارتباط بین کلاینت و سرور قطع شده باشد. در این صورت ارتباط با سرور به یک باره قطع میشود و رکوئست های http با شکست مواجه میشوند.
- ENOTFOUND : این خطا زمانی اتفاق میافتد که دامنه مورد استفاده در یک پروژه نود جی اس منقضی شده باشد و یا dns آن درست تنظیم نشده باشد و یا اینکه dns تازه تنظیم شده باشد اما ست نشده باشد.
- ETIMEDOUT : هنگامیکه یک اتصال یا درخواست HTTP پس از مدتی به درستی بسته نشود، خطای ETIMEDOUT توسط Node.js نمایش داده میشود.
اگر در درخواستهای HTTP خروجی خود یک بازه زمانی تنظیم نکرده باشید، ممکن است هر از چند گاهی با این خطا مواجه شوید. برای رفع مشکل میتوانید تعداد درخواست های خروجی را به یک تعداد خاص محدود کرد .
ECONNREFUSED :
Error: connect ECONNREFUSED 127.0.0.1:8000 at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1157:16)
Emitted 'error' event on ClientRequest instance at: at Socket.socketErrorListener (node:_http_client:442:9) at Socket.emit (node:events:526:28) at emitErrorNT (node:internal/streams/destroy:157:8) at emitErrorCloseNT (node:internal/streams/destroy:122:3) at processTicksAndRejections (node:internal/process/task_queues:83:21) { errno: -111, code: 'ECONNREFUSED', syscall: 'connect', address: '127.0.0.1', port: 8000
}
خطای ECONNREFUSED
زمانی نمایش داده میشود که اتصال با سرویس endpoint بر قرار نشود.
در زمانی که سرویس هدف غیر فعال باشد این اتفاق میافتد. به طور مثال این خطا زمانی اتفاق میافتد که که اپلیکیشن قصد اتصال به آدرس http://localhost:8000 دارد در حالیکه در endpoint برنامه ای در حال اجرا و منتظر نمیباشد.
ERRADDRINUSE
Error: listen EADDRINUSE: address already in use :::3001 at Server.setupListenHandle [as _listen2] (node:net:1330:16) at listenInCluster (node:net:1378:12) at Server.listen (node:net:1465:7) at Function.listen (/home/ayo/dev/demo/node_modules/express/lib/application.js:618:24) at Object. (/home/ayo/dev/demo/main.js:16:18) at Module._compile (node:internal/modules/cjs/loader:1103:14) at Object.Module._extensions..js (node:internal/modules/cjs/loader:1157:10) at Module.load (node:internal/modules/cjs/loader:981:32) at Function.Module._load (node:internal/modules/cjs/loader:822:12) at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12)
Emitted 'error' event on Server instance at: at emitErrorNT (node:net:1357:8) at processTicksAndRejections (node:internal/process/task_queues:83:21) { code: 'EADDRINUSE', errno: -98, syscall: 'listen', address: '::', port: 3001
}
این خطا عموما در زمان استارت و یا رستات وب سرور اتفاق میافتد.
وقتی سرور قصد listen از پورتی دارد که آن پورت توسط اپلیکیشن دیگری در حال استفاده میباشد، این خطا نمایش داده میشود.
ساده ترین روش برای حل این مشکل، اجرای اپلیکیشن بر روی پورتی متفاوت میباشد. در صورتی که لزوما باید از همین پورت تعریف شده استفاده شود باید آی دی پروسسی که پورت را اشغال کرده است را پیدا کرده و آن پروسس را با دستور زیر حذف کرد:
lsof -i tcp:3000
kill -9 2902
در مثال بالا پروسس اجرا شده بر روی پورت مورد نظر ما با آی دی 2902 کیل میشود. چنانچه هر یک از خطاهای بالا در ترمینال برای شما نمایش داده میشود میتوانید به بخش پشتیبانی تیکت ارسال بفرمایید. برای ارسال تیکت حتما متن ارور و یا اسکرین شات خطا را ارسال بفرمایید و اگر چند پروژه در حال اجرا دارید هم نام پروژه را در تیکت اعلام بفرمایید.
همینطور میتوانید سایر پستهای پارس وب سرور در مورد راهاندازی پروژه های نود جی اس را مشاهده کنید که میتواند مفید باشد :
























