استاد سلام همان مشکل قبلی هستش ببخشید اشتباها تیکت را بستم . استاد دقیقا 3 تا فایل شما رو هم عینا استفاده کردم بصورت زیر باز هم مشکل حل نشده . شما فرمودید اشکال در export کردن باشه که در تمام فایل ها هستش می تونید ملاحظه بفرمایید
import React from 'react';
import {NavigationContainer} from '@react-navigation/native';
import {createStackNavigator} from '@react-navigation/stack';
import HomeScreen from './app/Screens/HomeScreen';
const Stack = createStackNavigator();
const App = () => {
return (
<NavigationContainer>
<Stack.Navigator screenOptions={{headerShown: false}}>
<Stack.Screen name="Home" component={HomeScreen} />
</Stack.Navigator>
</NavigationContainer>
);
};
export default App;
import React from 'react';
import {
Container,
Header,
Footer,
FooterTab,
Left,
Right,
Body,
Title,
} from 'native-base';
const Layout = ({children, left, right, title, footer}) => {
return (
<Container>
<Header>
<Left>{left}</Left>
<Body>
<Title>{title}</Title>
</Body>
<Right>{right}</Right>
</Header>
{children}
<Footer>
<FooterTab>{footer}</FooterTab>
</Footer>
</Container>
);
};
export default Layout;
import React, {useCallback, useState, useContext} from 'react';
import {Text, FlatList, TouchableOpacity} from 'react-native';
import {Button} from 'native-base';
import {useFocusEffect} from '@react-navigation/native';
import Layout from '../Components/Layout';
const HomeScreen = props => {
const [notes, setNotes] = useState([]);
return (
<Layout
title="یاداشتهای من"
footer={
<Button full onPress={() => props.navigation.navigate('ADD')}>
<Text>اضافه کردن یاداشت جدید</Text>
</Button>
}>
<FlatList
data={notes}
keyExtractor={note => note.id}
renderItem={note => (
<TouchableOpacity
onPress={() =>
props.navigation.navigate('Update', {id: note.item.id})
}>
<Text>My Note</Text>
</TouchableOpacity>
)}
/>
</Layout>
);
};
export default HomeScreen;
سلام دوست من
در کدت مشکلی دیده نمیشه
چه خطایی دریافت میکردی متن کامل خطا رو قرار بده
با سلام خدمت استاد عزیز
این بار بعد از build شدن پروژه بدون هیچ توضیحی برنامه قطع می شود و ارتباط با محیط برنامه نویسی و اجرا در گوشی قطع می شود .جهت اطلاع کامپوننت های نصب شده به شرح ذیل است به نظرشما اشکال از نصب وابستگی ها نیست؟چند هفته هستش که در این قسمت گیر کرده ام و نمی دونم چی کار کنم از اینترنت هم چیزی دستگیرم نشده
مرسی ممنون
{
"name": "notepadprj",
"version": "0.0.1",
"private": true,
"scripts": {
"android": "cd android && ./gradlew clean && cd.. && react-native run-android",
"ios": "react-native run-ios",
"start": "react-native start",
"test": "jest",
"lint": "eslint ."
},
"dependencies": {
"@react-native-async-storage/async-storage": "^1.17.10",
"@react-native-masked-view/masked-view": "^0.2.8",
"@react-navigation/native": "^6.0.13",
"@react-navigation/native-stack": "^6.9.1",
"@react-navigation/stack": "^6.3.2",
"native-base": "^3.4.18",
"react": "18.1.0",
"react-native": "0.70.2",
"react-native-gesture-handler": "^2.7.0",
"react-native-safe-area-context": "^4.4.1",
"react-native-screens": "^3.18.0",
"react-native-svg": "^12.4.4"
},
"devDependencies": {
"@babel/core": "^7.12.9",
"@babel/runtime": "^7.12.5",
"@react-native-community/eslint-config": "^2.0.0",
"babel-jest": "^26.6.3",
"eslint": "^7.32.0",
"jest": "^26.6.3",
"metro-react-native-babel-preset": "0.72.3",
"react-test-renderer": "18.1.0"
},
"jest": {
"preset": "react-native"
}
}
> Task :app:compileDebugJavaWithJavac
> Task :app:installDebug
Installing APK 'app-debug.apk' on 'SM-G610F - 8.1.0' for :app:debug
Installed on 1 device.
w: Detected multiple Kotlin daemon sessions at build\kotlin\sessions
Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0.
You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.
See https://docs.gradle.org/7.5.1/userguide/command_line_interface.html#sec:command_line_warnings
BUILD SUCCESSFUL in 5m 42s
147 actionable tasks: 142 executed, 5 up-to-date
info Connecting to the development server...
info Starting the app on "5203eb15fa287487"...
Starting: Intent { cmp=com.notepadprj/.MainActivity }
Done in 494.89s.
PS D:\myWorkReact\myProjects\cliproject\notepadproject2\notepadprj>
سلامی مجدد دوست من
امکانش بسیار زیاد هست که از اختلالات اینترنت باشه
برای مطمئن شدن کلا node-module رو پاک کن و سعی کنی دوباره نصبش کنی اگر بدون هیچ خطایی نصب شد یعنی همه چیز درست هست.
کار بعدی میتونه پاک کردن مجازی ساز و نصب مجدد باشه اگر از مجازی ساز android studio استفاده میکنی البته
وسعی کن روی گوشی واقعی تست کنی
حتما دستور gradlew clean رو هم انجام بده تا مشکلی بود برطرف بشه
چون خیلی از وابستگی ها برای ری اکت نیتیو از انباره های گوگل و maven نصب میشه که فیلتر هست باید از ابزار ضد تحریم خوب استفاده بشه از جمله vpn pptp یا کریو یا ikev و غیره تا تمامیه کانکشن های سیستم بتونن از تحریم عبور کنن نه تنها اینکه یک افزونه روی مرورگر نصب کنیم و انتظار این رو داشته باشیم چون این مورد تنها برای مرورگر خواهد بود و تنها http , https باز میشه برای خود مرورگر نه کانکشن ها دیگر.
سلام مجدد استاد اون کارها که شما فرمودید رو انجام دادم باز یه پیام دیگه واقعا خسته کننده شده استاد بیشتر کمک ام کنید.این پیام روی پنجره نود میاد. مرسی
ERROR TypeError: undefined is not a function, js engine: hermes
ERROR Invariant Violation: Failed to call into JavaScript module method AppRegistry.runApplication(). Module has not been registered as callable. Registered callable JavaScript modules (n = 11): Systrace, JSTimers, HeapCapture, SamplingProfiler, RCTLog, RCTDeviceEventEmitter, RCTNativeAppEventEmitter, GlobalPerformanceLogger, JSDevSupportModule, HMRClient, RCTEventEmitter.
A frequent cause of the error is that the application entry file path is incorrect. This can also happen when the JS bundle is corrupt or there is an early initialization error when loading React Native., js engine: hermes
ERROR Invariant Violation: Failed to call into JavaScript module method AppRegistry.runApplication(). Module has not been registered as callable. Registered callable JavaScript modules (n = 11): Systrace, JSTimers, HeapCapture, SamplingProfiler, RCTLog, RCTDeviceEventEmitter, RCTNativeAppEventEmitter, GlobalPerformanceLogger, JSDevSupportModule, HMRClient, RCTEventEmitter.
A frequent cause of the error is that the application entry file path is incorrect. This can also happen when the JS bundle is corrupt or there is an early initialization error when loading React Native., js engine: hermes
سلام دوست من
یکی از مشکلات میتونه نداشتن دسترسی به props برای Navigation باشه
یکی از کارهایی که میتونی برای مطمئن شده از داشتن مقدار navigation انجام بدی به این صورت هست
<TouchableOpacity
onPress={() =>
props.navigation?.navigate('Update', {id: note.item.id})
}>
<Text>My Note</Text>
</TouchableOpacity>
متاسفانه برخی خطاها اطلاعات زیادی به توسعه دهنده نمیده به همین خاطر از روش TDD استفاده کن یعنی هر تغییری میدی چک کن که همه چیز درست کار میکنه تا بتونی بفهمی که با انجام چه کاری این خطا پیش اومده.
اگر مشکل حل نشده این روش رو تست کن
امروزه خیلی ها در این مورد خطا دریافت میکنن به دلیل نصب نبودن react-native-reanimated
به این صورت به package,json اضافه کن
module.exports = {
...
plugins: [
...
'react-native-reanimated/plugin',//اینو اضافه کن
],
};
اگر درست نشد در این مسیر android/app/build.gradle این خط رو اضافه کن و اگر بود false رو به true تغییر بده
project.ext.react = [
enableHermes: true // <-اگر بود از false به true عوض کن
]
بعد در MainApplication.java
import com.facebook.react.bridge.JSIModulePackage; // <- اضافه کن
import com.swmansion.reanimated.ReanimatedJSIModulePackage; // <- اضافه کن
...
private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
...
@Override
protected String getJSMainModuleName() {
return "index";
}
///////////////////////////////////////////////////
@Override
protected JSIModulePackage getJSIModulePackage() { <- این رو هم اضافه کن
return new ReanimatedJSIModulePackage(); //
}
///////////////////////////////////////////////////
};
بعد حتما clean کن
cd android
./gradlew clean
cd ../
و بعد به این صورت اجرا کن
npx react-native run-android -- --reset-cache
این کارهارو انجام بده ببین مشکلت برطرف میشه یا نه
سلام استاد
کار های گفته شده را انجام دادم ولی پروژه یاداشتهای من همچنان خطا دارد. با راهنمایی شما خط به خط کد اضافه کردم متوجه شدم که اگر کد مربوط به <Header> در فایل layout رو اضافه می کنم می کنم خطا دارم همچنین وقتی کد
<Left>{left}</Left> را اضافه می کنم باز خطا دارم با مراجعه به مستندات متوجه شدم ورژن native-base من ورژن 3 می باشد و شما در کلاس از ورژن 2 استفاده کرده اید بنابراین کد مربوط به layout همیشه خطا دارد چون در ورژن 3
باید بجای <Header> از <Hstack > , <Vstack > استفاده کرد. بنابراین دارم سعی میکنم که این المانها را یاد بگیریم تا بتونم کد کلاس را تو ورژن 3 بنویسم یا بازسازی کنم.
تا اینجا پش رفتم ولی خیلی خسته کننده شده و توی این جلسات 104 انگار دارم درجا می زنم . یعنی مثل expo دارم سریع جلو نمی رم
با تشکر
سلام دوست من
بهترین کار همین هست
هیچ دوره ایی در دنیای جاوااسکریپت نمی تونه همیشه بروزباشه و باید توانایی یادگیری سینتکس نوین هر کتابخانه یا پکیج رو داشته باشی
همیشه در اولین بخش یادگیری یک پکیج یا کتابخونه به مستنداتش مراجعه کن تا ببینی چه ورژنی اومده یا تغییراتی هست یا نه.
چند بار که این کارو انجام بدی و یادبگیری چطور خودت ادامه راه رو بری دیگر به هیچ دوره ایی احتیاج نخواهی داشت همانطور که همیشه در دوره میگم
یادگیری برنامه نویسی سخت هست و باید صبور باشی چون در دنیای واقعی یونس قربانی در کنارت نیست یا هر کس دیگه ایی بلکه خودت باید کدهای خودت رو بنویسی و راه خودت رو پیدا کنی و پیش بری و این بسیار زمانبر هست شاید یک خطا یک هفته زمانت رو بگیره ولی دیگه تجربه کسب میکنی و دیگه این مشکل رو تکرار نمیکنی و به همین صورت سرعت کارت بالاتر میره.
پس سرعت رو در نظر نگیر مهم اینه که هر روز داری پیشرفت میکنی و چیز جدیدی یاد میگیری.
موفق باشی