خطاهای ممکن در ری‌اکت‌نیتیو

در این بخش خطاهایی که ممکن‌است در مراحل مختلف راه‌اندازی پوشه در ReactNative با آن‌ها مواجه شوید به همراه راه‌حل ذکر شده‌اند.

در صورتی که مورد شما خطا (Error) نیست، ممکن است در بخش سوالات ذکر شده باشد.

خطای مورد نظر شما در لیست نیست؟ در گیت‌هاب به دنبال آن بروید و در صورت نیافتن در آنجا مورد جدیدی مطرح کنید.

خطاهای حین نصب‌ و راه‌اندازی

برنامه در حالت اجرای دستور starting Js server باقی می‌ماند

در صورتی که از yarn برای اجرای برنامه استفاده می‌کنید، در یک کامندلاین جدا دستور yarn start را وارد کنید تا سرور به درستی شروع به کار کند و سپس yarn android را بزنید.

Failed to resolve Core

پوشه از طریق Jcenter به پروژه‌ی اندروید اضافه‌می‌شود (همینطور لایبرری‌هایی دیگری که پوشه از آنها استفاده‌می‌کند). با توجه به اینکه این سرویس در کشور ما مورد تحریم است، بایستی با استفاده از ابزار گذراز تحریم این مورد را رفع‌کنید. به طور کلی دلایل می‌تواند این موارد باشد:

  • نبود اینترنت
  • عدم‌استفاده از ابزار گذر از تحریم: باید از ابزاری مثل شکن و یا ... استفاده‌کنید.
  • درصورتی که از اندروید استودیو یا اینتلیجی استفاده می‌کنید، استفاده از گریدل در حالت Offline mode را غیرفعال کنید. برای دانلود از سرور باید گریدل در حالت offline mode نباشد.

در صورتی که تمام موارد مورد قبل درست هستند اما باز هم مشکلی وجود دارد، ممکن است کش گریدل به موردی برخورده باشد و مشکلی داشته‌باشد. برای حل این مورد کش گریدل را می‌توانید دوباره بارگیری کنید:

  • Android studio را ببندید
  • از آدرس زیر فولدر caches را حذف کنید:
    • ویندوز: C:\Users\YOUR_USER\.gradle\caches
    • لینوکس: /home/user/you/.gradle/caches
  • برنامه را اجرا کرده و مجددا پروژه را Sync کنید.

Version conflict (خطای نسخه‌های مختلف یک لایبرری)

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

  • کتابخانه‌ای که این مورد را دارد (یکسان با نسخه‌های متفاوت اضافه‌شده است)، را خودتان دستی به dependencies اضافه‌کنید و نسخه‌ی مورد نظر خود را (معمولا نسخه‌ی نهایی) قرار دهید.

  • با استفاده از کد زیر گریدل را مجبور به استفاده از یک نسخه‌ی خاصی از آن کتابخانه کنید (کد را بالای بلوک dependencies در فایل build.gradle ماژول اپ قرار دهید.)

// File: build.gradle (app:module)
configurations.all {
resolutionStrategy {
eachDependency { DependencyResolveDetails details ->
def libraryGroup = "{artifact}"
def forceVersion = "{version}"
if (details.requested.group == libraryGroup) {
details.useVersion forceVersion
}
}
}
}
// dependencies {
// ...

بجای {artifact} پکیج‌ کتابخانه و بجای {version}‍ نسخه‌ای که مد نظر است را قرار دهید.