Ответ 1
- удалить node_modules и package-lock.json
-
npm install
-
npm install --save react-navigation
-
npm install --save react-native-gesture-handler
-
react-native link
Я установил интерактивную навигацию в проекте React Native. У его стартового проекта нет кодов. Но во время выполнения проекта я столкнулся с такой ошибкой.
Вот мой код навигации
import { createStackNavigator } from 'react-navigation';
import Home from './screens/Home';
import WeatherDetail from './screens/WeatherDetail';
const Navigation = createStackNavigator({
Home: { screen: Home },
WeatherDetail: {
screen: WeatherDetail
}
});
export default Navigation;
И вот коды App.js
import Navigator from './Router';
export default class App extends Component {
render() {
return (
<View style={styles.container}>
<Navigator />
</View>
);
}
}
Если я удалю компонент навигатора из App.js и заменим его текстом, приложение запускается без каких-либо ошибок.
npm install
npm install --save react-navigation
npm install --save react-native-gesture-handler
react-native link
Сначала удалите node_modules
и package-lock.json
и запустите npm install
. После установки пакета react-navigation
в вашем проекте React Native. Вы должны установить response-native-жест-обработчик. Если вы используете Expo, вам не нужно ничего делать здесь, она включена в SDK. Иначе:
npm install react-native-gesture-handler
И, наконец, зависимость жеста ссылки как:
react-native link react-native-gesture-handler
Этот ответ основан на документе React Navigation.
Если вы используете ссылку-ссылку для связи ваших зависимостей:
Из официального документа:
Если вы используете React Native> = 0.60, вам нужно сначала отключить автоподсоединение для реакции-нативного жеста-обработчика. Чтобы отключить автоматическое связывание для него, создайте файл response-native.config.js в корневом каталоге вашего проекта со следующим содержимым:
module.exports = {
dependencies: {
'react-native-gesture-handler': {
platforms: {
android: null,
ios: null,
},
},
},
};
Если вы используете React 0.60, просто опустите этот официальный документ. Выполните следующие шаги:
rm react-native.config.js
если существуетreact-native link react-native-gesture-handler
cd ios && pod install && cd..
react-native run-ios
может быть, кто-то пришел сюда из-за той же проблемы, что и я.
я получил эту ошибку, потому что я использую реагирующую навигацию версии 3.x, в этой версии stackNavigator
изменен на createStackNavigator
и должен использовать createAppContainer(createStackNavigator)
Я исправляю это, как сказал г-н. амири, но я не удаляю мой node_module, просто следуйте шагам 3 - 5
Поскольку мне запрещено комментировать, я публикую это здесь. Это ответ @Amiri Houssem, но я добавляю еще одну вещь:
remove node_modules and package-lock.json
npm install
npm install --save react-navigation
npm install --save react-native-gesture-handler
react-native link
Если есть ошибка даже после этих 5 шагов, проверьте android/settings.gradle и измените эту строку следующим образом:
project(':react-native-gesture-handler').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-gesture-handler/android')
Я получаю ту же ошибку на IOS от RN v0.60
У меня сработало следующее:
cd ios
pod install
Я отвечаю, потому что ни один из вышеперечисленных ответов не относился ко мне.
Я получил эту ошибку, потому что VSCode автоматически вставил import { TouchableOpacity } from 'react-native-gesture-handler'
из'act import { TouchableOpacity } from 'react-native-gesture-handler'
в качестве зависимости в моем файле, когда я добавил элемент <TouchableOpacity>
.
Дайте последним файлам, которые вы отредактировали, один раз, на случай, если там есть оператор импорта, которого вы не ожидаете!
Я использовал это в CLI, чтобы решить проблему
cd iOS
pod install
cd ..
react-native unlink react-native-gesture-handler
может быть его опозданием. Временное решение понижает версию реактивной навигации:
1- отсоединить и удалить интерактивную навигацию и обработчик
2- добавить "реагировать на навигацию": "^ 2.18.2" на package.json
3- удалить папку node_modules
4- npm я
5- реакция-родная ссылка
Несмотря на то, что react-native-gesture-handler
присутствует в папке node_modules
, нам нужно добавить его в путь или установить заново. Затем ссылка с родным кодом.
1) npm install --save react-native-gesture-handler
success Saved 1 new dependency.
info Direct dependencies
└─ [email protected]
info All dependencies
└─ [email protected]
2) react-native link
rnpm-install info Linking react-native-gesture-handler ios dependency
rnpm-install info Platform 'ios' module react-native-gesture-handler has been
successfully linked
rnpm-install info Linking react-native-gesture-handler android dependency
rnpm-install info Platform 'android' module react-native-gesture-handler has
been successfully linked
3) react-native run-android
или react-native run-ios
Если вы используете конфигурацию с Podfile в IOS. Выполните следующие действия:
pod 'RNGestureHandler', :path => '../node_modules/react-native-gesture-handler'
в <react-native-project>/ios/Podfile
pod 'RNGestureHandler', :path => '../node_modules/react-native-gesture-handler'
<react-native-project>/ios/Podfile
.<react-native-project>.xcworkspace
Добавьте RNGestureHandler.xcodeproj
в библиотеки (щелкните правой кнопкой мыши по папке библиотеки и выберите "Добавить файлы в") из node_modules/react-native-gesture-handler/ios
.libRNGestureHandler.a
в (Фазы сборки) → (Связать libRNGestureHandler.a
с библиотеками). Это хорошо сработало и для меня.
1) npm install react-navigation
2) npm install react-native-gesture-handler
3) npm intstall
4) react-native link
удалить приложение
5) react-native run-android
Выполните следующие команды в командной строке (Запуск от имени администратора)
npm install react-navigation
npm install react-native-gesture-handler
npm intstall
react-native link
Повторная установка приложения решит проблему.
Я боролся с этим, и ни один из вышеупомянутых ответов не работал для меня. Вот что я должен был сделать:
ios
полностью.node_modules
и package-lock.json
.react-native eject
чтобы заново создать папки с собственным кодом.npm install
react-native link
npm run start -- --reset--cache
react-native run-ios
см. вашу собственную версию реакции, если версия 0.60, то вы должны выполнить миграцию на androidX с помощью программы-переводчика, следуйте инструкциям по этой ссылке https://github.com/mikehardy/jetifier
удачно для меня :)
если вы сделали выше, он еще не запущен, попробуйте это, если вы используете Windows
cd android
.\gradlew cleanBuildCache
и попробуйте запустить его
react-native run-android