راهنمای رفع خطای MODULE_NOT_FOUND در Nodejs
![راهنمای رفع خطای MODULE_NOT_FOUND در Nodejs راهنمای رفع خطای MODULE_NOT_FOUND در Nodejs](https://parswebserver.com/wp-content/uploads/2023/06/Node-JS-50x50.jpg)
اگر شما تجربه کار بر روی پروژههای nodejs رو داشته باشید و با کتابخانهها nodejs و جاوااسکریپت و فریمورک هایی مثل vue , angular و react کار کرده باشید حتما با خطا “Error: cannot find module” مواجه شدید و این پیام را در هنگام دباگ پروژه nodejs خود مشاهده کردید.
در این آموزش دلیل نمایش این خطا و همینطور راه حل رفع این خطا را با هم مرور خواهیم کرد تا با استفاده از این مطالب این خطا را در پروژههای nodejs خود رفع کنیم.
مشاهده خطای پروژه در ترمینال با استفاده از pm2
برای وارد شدن در محیط ترمینال، در سیپنل لاگین میکنیم (آموزش لاگین به سیپنل) و به تب advance میرویم و روی گزینه terminal کلیک میکنیم.
با کلیک بر روی گزینه terminal وارد ترمینال میشویم و میتوانیم دستورات nodejs را وارد و اجرا کنیم.
برای مشاهده و بررسی خطا لاگ وارد محیط ترمینال شده و دستور pm2 logs به همراه نام دامنه و یا سابدامنه پروژه را وارد میکنیم و با زدن اینتر، لاگ پروژه و خطاهای احتمالی در صورت بروز،نمایش داده می شود.
دلیل نمایش خطای MODULE_NOT_FOUND
عمدهترین دلایلی که باعث میشود در پروژههای nodejs با این خطا مواجه شویم به شرح زیر است:
1- در پروژه در حال ایمپورت کردن آیتمی هستیم که ماژول آن در فولدر پروژه ما وجود ندارد.
2- اگر پکیجی که در حال استفاده از آن هستیم قدیمی(outdated) باشد و با ورژن nodejs ما همخوانی نداشته باشد با این خطا مواجه میشویم
3- در پروژه فایلی فراخوانی میشود که در پروژه موجود نیست.
اما اکثر این خطا زمانی نمایش داده میشود که ما در پروژه خود از دستوراتی با استفاده از فرمان import در پروژه خود استفاده کردیم اما پکیج آن را هنوز نصب نکردیم.
راه حل رفع خطای MODULE_NOT_FOUND
در واقع، در هنگام دباگ پروژههای nodejs با استفاده از دستور pm2 logs yourdomain.com (به جای yourdomain.com باید نام دامنه و یا سابدامنه ای که در هنگام ایجاد اپلیکیشن تعریف شده است، استفاده کرد.)
متن خطایی که نمایش داده میشود شامل اطلاعات مهمی هست که دلیل خطا و راه حل آن را به ما نمایش میدهد.
البته باید توجه داشته باشید که برای استفاده از دستور pm2 logs، باید حتما اپلیکیشن خود را در قسمت Nodejs Application ایجاد کرده باشید و اگر در قسمت Setup Nodejs App ایجاد شده باشد نمیتوانید pm2 logs استفاده کنید و برای استفاده از این دستور باید پروژه خود را از قسمت Setup Nodejs App حذف و در در قسمت Nodejs Application ایجاد و راهاندازی کنید.
فرمت خطای نمایش داده شده در ترمینال یکسان هست و با این فرمت نمایش داده میشود که کار را برای ما آسان میکند.
“Module not found: Error: Can’t resolve ‘package name‘ in ‘project directory”.
در پیام خطا، نام پکیجی که مربوط به خطا هست را نمایش میدهد و اشاره میکند که فولدر نصب پکیج کجاست.
برای حل این مشکل باید پکیجی که در خطا به آن اشاره شده است را در محیط ترمینال نصب کنیم
npm install package-name
به جای package-name نام پکیجی که در خطا وجود دارد را وارد میکنیم تا پکیج مورد نیاز اپلیکیشن ما نصب شود.
بعد از نصب موفق پکیج، پروژه خود را ریلود میکنیم و در مرورگر اپلیکیشن خود را تست و بررسی میکنیم.
اگر همچنان پروژه شما خطا داشت و با نصب پکیج مورد نیاز، مشکل رفع نشد و پروژه اجرا نشد، در قدم بعدی اقدامات زیر را انجام میدهیم.
1-دستور زیر را در محیط ترمینال اجرا میکنیم:
rm -rf node_modules
با اجرای این دستور، فولدر node_modules را از روی هاست پاک میکنیم. توجه داشته باشید که این دستور فقط و فقط فولدر پکیج های نصب شده روی هاست را حذف میکند و به هیچ عنوان فایل های پروژه شما و یا دیتابیس شما را تحت تاثیر قرار نمیدهد.
2- دستور زیر را وارد و اجرا میکنیم:
rm -f package-lock.json
با این دستور ما این فایل را از روی هاست حذف میکنیم تا در مراحل بعدی فایل جدید package-lock.json
ایجاد شود.
فایل package-lock.json
به صورت خودکار در پروژه ایجاد میشود و هدف آن حفظ سازگاری بین نسخههایی از برنامه هست که در جاهای مختلف نصب خواهند شد. در این فایل ورژن دقیق پکیجهایی که در پروژه استفاده شده است، ذخیره میشود.
وجود فایل package-lock.json هنگام اجرای دستور npm install این اطمینان را میدهد که دقیقاً همان ورژن از پکیجهایی برای ما نصب شوند که انتظار آن را داریم. این کار باعث میشود که پروژه ما در محیطهای مختلف و نسخههای مختلف nodejs، رفتارهای یکسان و قابل پیشبینی داشته باشد.
فایل package-lock.json علاوه بر اینکه ورژن دقیق پکیجها را ذخیره میکند، جزییاتی مثل Dependency های پکیج و آدرس URL که پکیج باید از آن لینک دانلود شود، را هم ذخیره میکند.
با اجرای دستور بالا، این فایل حذف میشود و در مراحل بعدی یک نسخه جدید از آن در پروژه ما ساخته خواهد شد.
3- دستور زیر را بعد از اجرای دستور قبلی اجرا میکنیم:
npm cache clean --force
تمامی دادههای فولدر کش را npm خالی و پاک میشود. طبق مستندات سایت npmjs.com، با اینکه تمامی عملیات لازم در مورد کش (مثلا اعتبارسنجی، تشخیص خطا در پکیجها و پاک کردن کش در صورت لزوم) توسط خود npm انجام میگیرد، معمولاً نیازی به پاک کردن کش npm نیست و تنها دلیل منطقی برای این کار، پاک کردن حافظه است.
به همین دلیل در نسخههای جدیدتر npm، دستور npm cache clean به تنهایی کار نمیکند و در کنار آن حتماً باید گزینه force– را هم بکار برد.
با این وجود وقتی پکیجی را نصب میکنیم که انتظار داریم بدون مشکل کار کند ولی درست کار نمیکند، یکی از راهحلهای احتمالی پاک کردن کش است.
4- و در آخر،دستور زیر را در مسیر پروژه، در ترمینال وارد و اجرا میکنیم تا پکیج ها از نو در مسیر پروژه نصب شود.
npm install
بعد از اینکه تمامی پکیجها به طور کامل نصب شدند، پروژه خود را ریلود میکنیم و با کارهایی که انجام دادیم باید خطای پروژه ما رفع شده باشد و پروژه ما به درستی اجرا شود و خطای دیگری در لاگ نمایش داده نشود.
اگر در زمان نصب یک یا دو پکیج نصب نشد، ورژن نود رو تغییر میدهیم و دوباره یکی از نسخههای nodejs را نصب میکنیم.
چنانچه شما تجربه ای در این زمینه دارید که فکر میکنید سایر کاربران میتوانند از آن استفاده کنند و یا اگر نکته ای ناگفته باقی ماند از بخش نظرات مطرح بفرمایید.
و اگر احیانا خطای پروژه شما رفع نشد میتوانید تیکت بزنید (ارسال تیکت) تا همکاران واحد فنی، پروژه شما را بررسی و راهنمایی های لازم خدمت شما ارائه شود.
![محبوبترین فریمورکها و تکنولوژیهای نودجیاس nodejs در سال 2024 محبوبترین فریمورکها و تکنولوژیهای نودجیاس nodejs در سال 2024](https://parswebserver.com/wp-content/uploads/2024/06/nodejs-frameworks-415x235.jpg)
محبوبترین فریمورکها و تکنولوژیهای نودجیاس nodejs در سال 2024
![پروژههای قابل اجرا بر روی هاستهای پایتون با Cpanel پروژههای قابل اجرا بر روی هاستهای پایتون با Cpanel](https://parswebserver.com/wp-content/uploads/2024/06/python_pws-415x235.jpg)
پروژههای قابل اجرا بر روی هاستهای پایتون با Cpanel
![آموزش فعالسازی SSL در هاست آموزش فعالسازی SSL در هاست](https://parswebserver.com/wp-content/uploads/2020/02/ip4-2.jpg)
آموزش فعالسازی SSL در هاست
![ساخت دیتابیس مونگو دی بی و اتصال به studio 3t ساخت دیتابیس مونگو دی بی و اتصال به studio 3t](https://parswebserver.com/wp-content/uploads/2020/09/MongoDB-3.png)
ساخت دیتابیس مونگو دی بی و اتصال به studio 3t
![فعال کردن extension های php در cPanel فعال کردن extension های php در cPanel](https://parswebserver.com/wp-content/uploads/2023/01/php-415x235.jpg)
فعال کردن extension های php در cPanel
![جلوگیری از ارتباط لینک های خارجی پیشخوان وردپرس جلوگیری از ارتباط لینک های خارجی پیشخوان وردپرس](https://parswebserver.com/wp-content/uploads/2022/10/wp-02-415x235.jpg)
جلوگیری از ارتباط لینک های خارجی پیشخوان وردپرس
![مشاهده لاگ های سایت در Raw Access سی پنل مشاهده لاگ های سایت در Raw Access سی پنل](https://parswebserver.com/wp-content/uploads/2022/09/raw-06-415x235.jpg)
مشاهده لاگ های سایت در Raw Access سی پنل
![معرفی سرویس Webalizer در سی پنل معرفی سرویس Webalizer در سی پنل](https://parswebserver.com/wp-content/uploads/2022/08/Webalizer-02-376x235.jpg)
معرفی سرویس Webalizer در سی پنل
![معرفی سرویس آمار سی پنل Awstats معرفی سرویس آمار سی پنل Awstats](https://parswebserver.com/wp-content/uploads/2022/08/Awstats-01-415x235.jpg)
معرفی سرویس آمار سی پنل Awstats
![معرفی سرویس Virus Scanner در سی پنل معرفی سرویس Virus Scanner در سی پنل](https://parswebserver.com/wp-content/uploads/2022/08/scan-02-293x235.jpg)
معرفی سرویس Virus Scanner در سی پنل
![معرفی قابلیت Track DNS در سرویسهای سی پنل معرفی قابلیت Track DNS در سرویسهای سی پنل](https://parswebserver.com/wp-content/uploads/2022/08/dns-05-415x235.jpg)
معرفی قابلیت Track DNS در سرویسهای سی پنل
![معرفی بخش BoxTrapper در سی پنل معرفی بخش BoxTrapper در سی پنل](https://parswebserver.com/wp-content/uploads/2022/08/bt-01-415x235.jpg)
معرفی بخش BoxTrapper در سی پنل
![قابلیت Greylisting در سی پنل قابلیت Greylisting در سی پنل](https://parswebserver.com/wp-content/uploads/2022/08/Greylisting-01-415x235.jpg)
قابلیت Greylisting در سی پنل
![آموزش مسدود سازی IP با استفاده از IP Blocker سی پنل آموزش مسدود سازی IP با استفاده از IP Blocker سی پنل](https://parswebserver.com/wp-content/uploads/2022/08/ip-1-415x235.jpg)
آموزش مسدود سازی IP با استفاده از IP Blocker سی پنل
![ایجاد رکوردهای DNS در ZoneEditor سی پنل ایجاد رکوردهای DNS در ZoneEditor سی پنل](https://parswebserver.com/wp-content/uploads/2022/07/dns-415x235.jpg)
ایجاد رکوردهای DNS در ZoneEditor سی پنل
![بررسی Bandwidth در سرویس سی پنل بررسی Bandwidth در سرویس سی پنل](https://parswebserver.com/wp-content/uploads/2022/07/bw-415x235.jpg)
بررسی Bandwidth در سرویس سی پنل
![کد EPP چیست کد EPP چیست](https://parswebserver.com/wp-content/uploads/2022/06/EPP-415x235.jpg)
کد EPP چیست
![جلوگیری از دریافت ایمیل های خاص در سی پنل جلوگیری از دریافت ایمیل های خاص در سی پنل](https://parswebserver.com/wp-content/uploads/2022/06/email-415x235.jpg)
جلوگیری از دریافت ایمیل های خاص در سی پنل
![آموزش ایجاد ساب دامنه در هاست سی پنل آموزش ایجاد ساب دامنه در هاست سی پنل](https://parswebserver.com/wp-content/uploads/2022/06/sub-01-415x235.jpg)
آموزش ایجاد ساب دامنه در هاست سی پنل
![آموزش مدیریت فضای ایمیل سی پنل آموزش مدیریت فضای ایمیل سی پنل](https://parswebserver.com/wp-content/uploads/2022/06/email-logo-415x235.jpg)
آموزش مدیریت فضای ایمیل سی پنل
![آموزش رفع ارور 502 Bad gateway آموزش رفع ارور 502 Bad gateway](https://parswebserver.com/wp-content/uploads/2021/11/502-415x235.jpg)
آموزش رفع ارور 502 Bad gateway
![محبوبترین فریمورکها و تکنولوژیهای نودجیاس nodejs در سال 2024 محبوبترین فریمورکها و تکنولوژیهای نودجیاس nodejs در سال 2024](https://parswebserver.com/wp-content/uploads/2024/06/nodejs-frameworks-415x235.jpg)
محبوبترین فریمورکها و تکنولوژیهای نودجیاس nodejs در سال 2024
![پروژههای قابل اجرا بر روی هاستهای پایتون با Cpanel پروژههای قابل اجرا بر روی هاستهای پایتون با Cpanel](https://parswebserver.com/wp-content/uploads/2024/06/python_pws-415x235.jpg)
پروژههای قابل اجرا بر روی هاستهای پایتون با Cpanel
![هاست نودجیاس برای چه پروژههایی مناسب است؟ هاست نودجیاس برای چه پروژههایی مناسب است؟](https://parswebserver.com/wp-content/uploads/2024/06/pws_nodejs_projects-415x235.jpg)
هاست نودجیاس برای چه پروژههایی مناسب است؟
![راهنمای حذف لینکهای stats.wp.com در وردپرس راهنمای حذف لینکهای stats.wp.com در وردپرس](https://parswebserver.com/wp-content/uploads/2024/02/website-loading-415x235.png)
راهنمای حذف لینکهای stats.wp.com در وردپرس
![چرا وب سایت وردپرسی کند است؟ چرا وب سایت وردپرسی کند است؟](https://parswebserver.com/wp-content/uploads/2024/04/migrating-wordpress-415x235.jpg)
چرا وب سایت وردپرسی کند است؟
![تفاوت هاست وردپرس با هاست معمولی تفاوت هاست وردپرس با هاست معمولی](https://parswebserver.com/wp-content/uploads/2024/04/Use-Case@2x-2-1-415x235.png)
تفاوت هاست وردپرس با هاست معمولی
![نقش امنیت در سایتهای وردپرسی نقش امنیت در سایتهای وردپرسی](https://parswebserver.com/wp-content/uploads/2024/04/امنیت-وردپرس-415x235.jpg)
نقش امنیت در سایتهای وردپرسی
![تبریک سال نو با هدیه نوروزی پارس وب سرور تبریک سال نو با هدیه نوروزی پارس وب سرور](https://parswebserver.com/wp-content/uploads/2024/03/spring1403-415x235.jpg)
تبریک سال نو با هدیه نوروزی پارس وب سرور
![تفاوت و برتری سرورهای G10 در مقایسه با سرورهای G9 تفاوت و برتری سرورهای G10 در مقایسه با سرورهای G9](https://parswebserver.com/wp-content/uploads/2024/03/server-g10-415x235.png)
تفاوت و برتری سرورهای G10 در مقایسه با سرورهای G9
![7 راهکار برای جلوگیری از اسپمشدن ایمیلها 7 راهکار برای جلوگیری از اسپمشدن ایمیلها](https://parswebserver.com/wp-content/uploads/2024/02/email-spam-pws-415x235.png)