آموزشگاه برنامه نویسی تحلیل داده
آموزشگاه برنامه نویسی تحلیل داده

آموزش Troubleshooting در React Native

دوره های مرتبط با این مقاله

آموزش Troubleshooting در React Native

در اینجا به بعضی از مشکلات رایج که ممکن است هنگام راه اندازی React Native به آن مواجه شوید اشاره می کنیم. اگر به مشکلی برخوردید که در اینجا اشاره نشده، سعی کنید issue مربوط به آن را در GitHub پیدا کنید.

Port در حال استفاده است

Packager Native React روی پورت 8081 اجرا می شود. اگر Process دیگری از قبل از آن Port استفاده می کند، می توانید آن Process را خاتمه دهید یا Port را که Packager از آن استفاده می کند تغییر دهید.

خاتمه Process روی پورت 8081

برای یافتن Process که روی پورت 8081 گوش می دهد، دستور زیر را اجرا کنید:


$ sudo lsof -i :8081

سپس دستور زیر را برای خاتمه Process اجرا کنید:


$ kill -9 < pid>< /pid>

در ویندوز می توانید Process را با استفاده از Resource Monitor پیدا کنید و در Task Manager آن را kill کنید.

استفاده از port دیگری به جز 8081

می توانید با استفاده از پارامتر port، packager را تنظیم کنید که از port دیگری به جز 8081 استفاده کند:


$ react-native start --port=8088

باید application خود را update کنید که bundle جاوااسکریپتی را روی port جدید load کند. اگر با Xcode اجرا می کنید، در فایل node_modules/react-native/React/React.xcodeproj/project.pbxproj تمام 8081 ها را به port جدید تغییر دهید.

NPM locking error

اگر هنگام استفاده از React Native CLI به خطایی مثل npm WARN locking Error: EACCES برخوردید، دستور زیر را اجرا کنید:


sudo chown -R $USER ~/.npm
sudo chown -R $USER /usr/local/lib/node_modules

Missing libraries for React

اگر React Native را به صورت دستی به پروژه اضافه کرده اید، مطمئن شوید تمام dependency های مربوطه را، مثل RCTText.xcodeproj و RCTImage.xcodeproj اضافه کرده اید. سپس، binary هایی که توسط این dependency ها ساخته می شوند باید به binary application شما لینک شوند. از بخش Linked Frameworks and Binaries در Setting Project در Xcode استفاده کنید. جزئیات بیشتر را در بخش آموزش افزودن کتابخانه ها به یک React Native Application بخوانید.

اگر از CocoaPods استفاده می کنید، چک کنید که React را همراه با subspecs ها به Podfile اضافه کرده باشید. برای مثال، اگر از API های ، ، fetch() استفاده می کنید، باید موارد زیر را به Podfile اضافه کنید:


pod 'React', :path = >  '../node_modules/react-native', :subspecs = >  [
  'RCTText',
  'RCTImage',
  'RCTNetwork',
  'RCTWebSocket',
]

سپس، مطمئن شوید pod install را اجرا کرده اید و یک پوشه ی Pods/ در پروژه تان، ساخته شده است. CocoaPods به شما می گوید از فایل تولید شده ی .xcworkspace استفاده کنید تا بتوانید از این dependency های نصب شده استفاده کنید.

React Native وقتی به عنوان CocoaPod استفاده می شود، کامپایل نمی شود

یک افزونه ی CocoaPods به نام ocoapods-fix-react-native هست که اصلاحات احتمالی کد به دلیل تفاوت های هنگام استفاده از یک dependency manager مدیریت می کند.

خطای Argument list too long: recursive header expansion failed

در build settings پروژه، User Search Header Paths و Header Search Paths دو setting هستند که تعیین می کنند Xcode برای یافتن فایل های Import شده در کد کجا را جست و جو کند. برای Pods، CocoaPods از یک آرایه ی پیش فرض از پوشه ها به منظور جست و جو استفاده می کند. چک کنید که این تنظیمات تغییر نکرده باشد، و هیچ کدام از پوشه های config شده بیش از حد بزرگ نباشند. اگر یکی از پوشه ها بزرگ باشد، Xcode سعی می کند به طور بازگشتی کلی دایرکتوری را بگردد و خطای بالا اتفاق می افتد.

برای بازگرداندن تنظیمات User Search Header Paths و Header Search Paths به وضع پیش فرض، که توسط CocoaPods تنظیم شده، در پنل Build Settings آن را انتخاب و پاک کنید. مقدار آن به حالت پیش فرض باز می گردد.

خطای No transports available

React Native یک polyfill برای Web Socket پیاده سازی می کند. این polyfill ها به عنوان بخشی از مازول React Native که با import React from 'react' به application تان اضافه می کنید، ساخته و مقداردهی اولیه می شوند. اگر ماژول دیگری را load کنید که به Web Socket احتیاج دارد، مثل Firebase، مطمئن شوید پس از react-native آن را load/require می کنید:


import React from 'react';
import Firebase from 'firebase';

خطای Shell Command Unresponsive Exception

اگر به یک خطای ShellCommandUnresponsiveException برخوردید مثل:


Execution failed for task ':app:installDebug'.
  com.android.builder.testing.api.DeviceException: com.android.ddmlib.ShellCommandUnresponsiveException

در android/build.gradle نسخه gradle را به 1.2.3 پایین بیاورید.

وقفه هنگام اجرای دستور react-native init

اگر هنگام دستور react-native init سیستم هنگ کرد، آن را در مد verbose اجرا کنید و به #2797 برای مطالعه در مورد دلایل رایج این مشکل مراجعه کنید:


react-native init --verbose

خطای Unable to start react-native package manager (on Linux)

مورد اول: Error "code":"ENOSPC","errno":"ENOSPC"

این مشکل به دلیل تعداد دایرکتوری هایی که inotify (توسط watchman در Linux استفاده می شود) می تواند مانیتور کند، بوجود می آید. برای رفع آن، دستور زیر را در ترمینال اجرا کنید:


echo fs.inotify.max_user_watches=582222 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

  • 415
  •    0
  • تاریخ ارسال :   1398/06/05

دانشجویان گرامی اگر این مطلب برای شما مفید بود لطفا ما را در GooglePlus محبوب کنید
رمز عبور: tahlildadeh.com یا www.tahlildadeh.com
ارسال دیدگاه نظرات کاربران
شماره موبایل دیدگاه
عنوان پست الکترونیک

ارسال

آموزشگاه برنامه نویسی تحلیل داده
آموزشگاه برنامه نویسی تحلیل داده

تمامی حقوق این سایت متعلق به آموزشگاه تحلیل داده می باشد .