بررسی و حل خطای Unexpected reserved word ‘await’ در یاکت React

سلام سلام

مدتیه دارم مهارت های جاوااسکریپت خودم رو تقویت میکنم. تا اینجا ویوو رو یاد گرفتم در حد بیسیک ولی ریاکت رو تصمیم گرفتم بهتر یاد بگیرم و تا اینجا یک دوره رو کامل گذروندم. تصمیم گرفتم بعضی خطاهایی که احتمالا شما هم به اونها بر میخورید رو بنویسم هم به یادگار برای خودم بمونه هم شما استفاده کنید.

خب بریم سراغ خطای Unexpected reserved word ‘await’ در ریاکت.

این خطا داره به این اشاره میکنه که در جایی که صحیح نیست شما از کلمه رزرو شده await استفاده کردید. میشه اینطور در نظر گرفت تابع اسکوپ شما این کلمه رو نمیشناسه. دلیلش چی میتونه باشه؟ async رو برای اسکوپ تابعتون تعریف نکردید احتمالا یا به درستی تعریف نشده. پس برگردیم کمی عقبتر و یه نگاه کنیم که چطور تابع async خودمون رو تعریف کردیم.
امیدوارم زود پیداش کنید.

موفق باشید

دلیل باز نشدن برنامه Visual Studio Code یا WhatsDesk در اوبونتو

امروز اومدم با VS Code کار کنم ولی هرچی میزدم برنامه باز نمیشد از دیروز هم whatsdesk اجرا نمیشد! خب این از چالش های Ubuntu هستش و وقتی میخوای اخت بگیری با یک سیستم عامل بهتره همه قلق هاشو یاد بگیری.

مدتی بود VS Code  بهم خطای  “System limit for number of file watchers reached” رو میداد و برطرفش نکردم. تا اینکه امروز کلا Visual Studio Code اجرا نشد نشد و فراموش کردم خطایی که نمایش میداد چی بود! اول فکر میکردم بخاطر فولدر vendor نوتیف میداد اما با سرچ vs code is not runnig ubuntu از اینجا Cannot open Visual Studio Code این نتیجه رسیدم که برای مشاهده لاگ اجرای VS Code از دستور زیر میشه استفاده کرد:

code --verbose

که با اجرای اون به خطای زیر رسیدم:
Error: ENOSPC: System limit for number of file watchers reached, watch '/snap/code'با جستجوی متن خطا “System limit for number of file watchers reached” به صفحه React Native Error: ENOSPC: System limit for number of file watchers reached رسیدم. گویا این خطا ربطی به vs code نداره و بخاطر inotify watch هست. اول بیاین خطا رو درست کنیم بعد بقیه رو توضیح میدم. برای اینکه ببینید تنظیم فعلی سیستمتون برای دنبال کردن فایل ها چقدر هست این دستور رو بزنین:

cat /proc/sys/fs/inotify/max_user_watches

احتمالا عددی حدود ۸ هزار میده. خب وقتی شروع به نصب برنامه ها مثل whatsdesk (نسخه غیر رسمی whatsapp) یا vscode در اوبونتو میکنین این برنامه نیاز دارن بعضی فایل ها رو دنبال کنن اصطلاحا ترک کنن. اینکار توسط watch انجام میشه و محدودیت هایی براش وجود داره. برای رفع خطا کد زیر رو بزنین

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

این کد به انتهای فایل /etc/sysctl.conf مقدار fs.inotify.max_user_watches=524288 رو اضافه میکنه.

رفع مشکل باز نشدن برنامه ها در لینوکس اوبونتو

همین! الان برنامه هایی که باز نمیشدن راحت باز میشن!

حالا بریم سراغ اینکه inotify watch چی هست؟
اول از همه باید بدونیم خود inotify چی هست. inotify از ترکیب inode notify تشکیل شده و یک زیر سیستم (subsystem) هسته لینوکسه که تغییرات فایل های سیستم رو مشاهده میکنه و از طریق api اونها رو به برنامه های سطح بالاتر اطلاع میده. watch هم این وسط فایل ها رو برای تغییرات دنبال میکنه و هر تغییری رو ارسال میکنه به inotify.

برطرف کردن خطای Skipping acquire of configured file ‘contrib/binary-i386/Packages’

وقتی میخوایم VirtualBox 6 رو روی Ubuntu 18.04 نصب کنیم، با خطای زیر ممکنه مواجه بشیم:

N: Skipping acquire of configured file 'contrib/binary-i386/Packages' as repository 'http://download.virtualbox.org/virtualbox/debian bionic InRelease' doesn't support architecture 'i386'

دلیلشم اینه راهنمایی که از روی اون VirtualBox 6 رو نصب کردیم مناسب cpu ما نبوده و برای رفعش لازمه فایل
sudo nano /etc/apt/sources.list.d/virtualbox.list
رو ویرایش کنیم، داخل این فایل دنبال خطر زیر گردین:
deb https://download.virtualbox.org/virtualbox/debian bionic contrib
و اونو تغییر بدین به:
deb [arch=amd64] https://download.virtualbox.org/virtualbox/debian bionic contrib
که در اصل فقط اولش یه [arch=amd64]  اضافه کردیم.

من این راهنما رو از اینجا پیدا کردم و در اینجا یک بش اسکریپت برای نصب و راه اندازی راحت VirtualBox 6 وجود داره که میتونین استفاده کنین.

خطای file_put_contents storage\framework/sessions failed to open stream: No such file or directory

این خطا وقتی برای من رخ داد که از اوبونتو به ویندوز مهاجرت کردم. فولدر های اصلی پروژم رو دراپباکس بود بقیه رو با کومپوزر نصب کردم. فولدر های (tests vendor storage bootstrap) رو کپی نکرم. تصور بر این بود که توسط composer نصب بشن. تا یه حدی هم نصب شدن و من دائم خطای خطای file_put_contents storage\framework/sessions failed to open stream: No such file or directory رو میگرفتم. با جستجو هایی که انجام دادم اکثرا نوشته بودن با clear cache کارت درست میشه ولی مشکل من حل نشد. بعد کلی کلنجار رفتن دستور زیر رو تایپ کردم (در ویندوز)

php artisan | findstr clear

 

این دستور همه دستورات مربوط به پاک کردن کش رو میاره که میشه این:

clear-compiled Remove the compiled class file
auth:clear-resets Flush expired password reset tokens
cache:clear Flush the application cache
config:clear Remove the configuration cache file
route:clear Remove the route cache file
view:clear Clear all compiled view files

 

تک به تک همه کش ها رو پاک کردم تا رسیدم به آخری که خطای laravel RuntimeException : View path not found مواجه شدم و با یه جستجوی ساده و سریع به جواب درست رسیدم.

فولدر storage باید زیر مجموعه های app framework و logs رو داشته باشه که برای من فقط logs وجود داشت. چون فولدر storage فقط اطلاعات کش رو ذخیره میکنه و فایل خاصی توش نیست یه لاراول جدید تعریف کردم و فولدر های اونو کپی کردم اینجا و مشکل حل شد.

تو جستجو ها به یه حقه(تریک) باحال برخوردم که کار پاک کردن کش ها رو راحت میکنه. تو رَوت وبتون اینو اضافه کنین:

Route::get('/clear-cache', function() {
    Artisan::call('clear-compiled');
    Artisan::call('auth:clear-resets');
    Artisan::call('config:clear');
    Artisan::call('route:clear');
    Artisan::call('view:clear');
    Artisan::call('cache:clear');
    Artisan::call('config:cache');
    return 'DONE';
});