رفع اشکال
این بخش بر پایه مشکلاتی نوشته شده که واقعاً در پروژههای HTML/Vite رخ میدهد. هر مورد شامل نشانه، علت و راهحل است.
صفحه بدون استایل باز میشود
نشانه: متنها بدون رنگ و فاصله نمایش داده میشوند؛ در کنسول شبکه، فایل SCSS با Content-Type: application/javascript بارگذاری شده است.
علت: Vite فایلهای .scss را در حالت توسعه بهعنوان ماژول JS سرو میکند و مرورگر آن را بهعنوان استایل اجرا نمیکند.
راهحل: لینک استایل باید با پارامتر ?direct باشد (در src/partials/head.html):
<link rel="stylesheet" href="/src/scss/main.scss?direct">در خروجی نهایی (npm run build) این لینک با یک فایل CSS هشدار جایگزین میشود.
لینکها از صفحههای تودرتو خطای ۴۰۴ میدهند
علت: هر صفحه یک پوشه عمیقتر است، پس users/list.html از داخل crm/contacts.html باید ../users/list.html باشد.
راهحل: لینکهای تولیدشده در زمان اجرا با src/js/core/links.js خودکار اصلاح میشوند (fixLinks + observeLinks). اگر خودتان لینک ثابت مینویسید:
<a href="../users/list.html">کاربران</a>یا در جاوااسکریپت از NOVA.url('users/list.html') استفاده کنید.
صفحهها بعد از ساخت در dist/src/pages ظاهر میشوند
علت: کلیدهای ورودی Vite باید پسوند .html داشته باشند.
راهحل: مطمئن شوید tools/build-pages.mjs و tools/flatten-dist.mjs در زنجیره npm run build هستند و مرحله flatten-dist آخرین گام است.
کلاسهایی که در JS نوشتهام استایل ندارند
راهحل: npm run qa:links را اجرا کنید؛ این ابزار همه کلاسهای استفادهشده در HTML و در تمپلیتهای JS را با استایلهای موجود مقایسه میکند و لیست کمبودها را میدهد.
توکنهای {{...}} در HTML خروجی ماندهاند
علت: توکن جدیدی اضافه کردهاید که در نقشه توکنهای tools/nova-plugin.mjs نیست.
راهحل: آن را به TOKENS اضافه کنید و دوباره npm run build بگیرید. برای بررسی:
grep -ro "{{[A-Z_]*}}" dist --include=*.html | sort -uداده جدول نمیآید و «موردی یافت نشد» نمایش داده میشود
علتهای ممکن:
- نام منبع در
data-resourceبا کلید رجیستریsrc/services/index.jsیکی نیست. - فیلتر پیشفرض سختگیرانه است؛ دکمه «پاککردن فیلترها» را بزنید.
- نام فیلد در
searchFieldsسرویس وجود ندارد؛ ابزار جستجو کار میکند اما نتیجه نمیدهد.
تغییرات من در ساخت بعدی از بین میرود
علت: فایلهای src/pages/** در هر ساخت بازنویسی میشوند.
راهحل: تغییر را در src/partials/pages/<مسیر>.html یا در کنترلکننده مربوطه در src/js/pages/** انجام دهید.
فونت فارسی لود نمیشود
علت: فونت از node_modules/vazirmatn خوانده میشود. اگر node_modules ناقص باشد، فایل woff2 پیدا نمیشود.
راهحل: npm install را کامل اجرا کنید. در خروجی نهایی، فونت در dist/assets/fonts/ است؛ وجود آن را بررسی کنید:
ls dist/assets/fonts/نمودار خالی میماند
علتهای ممکن: ظرف نمودار وجود ندارد، data-chart-key تکراری است، یا initCharts قبل از رندر شدن DOM صدا زده شده است.
راهحل: پس از رندر، initCharts(scope) را صدا بزنید. ابزار npm run qa:smoke همین رفتار را در یک DOM شبیهسازیشده آزمایش میکند و صفحه معیوب را نشان میدهد.
در RTL چیزی از لبه صفحه بیرون میزند
علت: استفاده از left/right بهجای ویژگیهای منطقی.
راهحل: left → inset-inline-start، right → inset-inline-end، margin-left → margin-inline-start، border-left → border-inline-start. سپس صفحه را در هر دو جهت بیازمایید.
صفحه در موبایل نوار افقی اضافه دارد
علتهای رایج: جدول بدون .table-responsive، عرض ثابت پیکسلی، یا white-space: nowrap روی متن بلند.
راهحل: جدولها را در .table-responsive بگذارید، عرضها را با min(100%, …) بنویسید و متنهای بلند را با text-wrap: pretty یا شکست کلمه مدیریت کنید. عرضهای ۳۲۰/۳۷۵/۴۱۴ را بیازمایید.
ساختار پرتکرار: چگونه خطا را پیدا کنم؟
npm run qa:links # خطاهای خروجی (لینک، دارایی، کلاس، دسترسپذیری)
npm run qa:smoke # خطاهای زمان اجرای کنترلکنندههاهر دو ابزار با کد خروج غیرصفر شکست را گزارش میکنند و همینها را میتوانید در CI هم اجرا کنید.
[NOVAADMIN] چاپ میشوند؛ متن خطا و نام فایل را در گزارش بگذارید