Мы создали приложение React Native с использованием Expo, и теперь у нас есть требование для его производства за Windows. Так как Expo не поддерживает Windows, у нас есть ejected
проект от Expo до проекта Bare React Native.
Мы столкнулись с множеством ошибок, касающихся пакетов и т. Д. c, которые нам удалось устранить, однако теперь мы застряли с ошибкой, для которой мы не можем найти решение.
Мы настраиваем проект windows в соответствии с инструкциями, то есть устанавливаем пакеты, запускаем react-native windows
и затем запускаем проект с react-native run windows
.
Когда мы запускаем проект в консоли браузера, мы получаем следующие 2 ошибки:
_RNGestureHandlerModule.default is undefined
Module AppRegistry is not a registered callable module (calling runApplication)
Мы подумали, что самый простой способ начать сужать эти ошибки - это визуализировать элемент <Text>
в App.js
, чтобы мы не исследовали все решение. Однако ошибка по-прежнему возникает.
Вот урезанный пример моего проекта для отображения проблемы:
Пакет. json
{
"scripts": {
"start": "react-native start",
"android": "react-native run-android",
"ios": "react-native run-ios",
"web": "expo start --web",
"test": "jest",
"postinstall": "jetify && node_modules/.bin/rn-nodeify --install events --hack"
},
"dependencies": {
"@babel/runtime": "^7.4.2",
"@expo/vector-icons": "^10.0.6",
"@mapbox/polyline": "^1.1.0",
"@react-native-community/netinfo": "4.6.0",
"axios": "^0.19.0",
"base-64": "^0.1.0",
"events": "^3.1.0",
"expo-av": "~8.0.0",
"expo-background-fetch": "~8.0.0",
"expo-barcode-scanner": "~8.0.0",
"expo-constants": "~8.0.0",
"expo-file-system": "~8.0.0",
"expo-font": "^8.0.0",
"expo-linear-gradient": "~8.0.0",
"expo-localization": "~8.0.0",
"expo-location": "~8.0.0",
"expo-network": "~2.0.0",
"expo-permissions": "~8.0.0",
"expo-sharing": "~8.0.0",
"install": "^0.13.0",
"moment": "^2.24.0",
"pouchdb-adapter-asyncstorage": "^6.4.1",
"pouchdb-adapter-react-native-sqlite": "^2.0.0",
"pouchdb-react-native": "^6.4.1",
"react": "~16.9.0",
"react-dom": "~16.9.0",
"react-native": "^0.60.0-0",
"react-native-cache": "^1.1.8",
"react-native-elements": "^1.2.7",
"react-native-gesture-handler": "^1.1.0",
"react-native-image-slider-box": "^1.0.11",
"react-native-keyboard-aware-scroll-view": "^0.9.1",
"react-native-map-link": "^2.7.3",
"react-native-maps": "0.26.1",
"react-native-paper": "^3.5.1",
"react-native-picker-select": "^6.3.3",
"react-native-reanimated": "^1.7.0",
"react-native-redash": "7.2.0",
"react-native-scalable-image": "^1.0.0",
"react-native-screens": "~2.0.0-alpha.12",
"react-native-sideswipe": "^1.5.0",
"react-native-svg": "9.13.3",
"react-native-unimodules": "~0.7.0",
"react-native-vector-icons": "^6.6.0",
"react-native-web": "~0.11.7",
"react-native-webview": "7.4.3",
"react-native-windows": "0.60.0-vnext.136",
"react-navigation": "3.5.1",
"react-navigation-drawer": "^2.3.3",
"react-navigation-stack": "^1.10.3",
"rn-nodeify": "^10.2.0",
"rxdb": "^8.7.5",
"rxjs": "^6.5.4",
"sentry-expo": "^2.0.1"
},
"devDependencies": {
"@babel/core": "~7.6.0",
"@types/jest": "^24.9.0",
"babel-jest": "~24.9.0",
"babel-preset-expo": "~8.0.0",
"expo-task-manager": "^8.0.0",
"jest": "^24.9.0",
"jest-expo": "^36.0.1",
"jetifier": "~1.6.4",
"metro-react-native-babel-preset": "~0.56.0",
"react-native-svg-transformer": "^0.14.3",
"react-native-testing-library": "^1.12.0",
"react-test-renderer": "^16.12.0",
"rn-nodeify": "^10.2.0",
"rnpm-plugin-windows": "^0.5.1-0"
},
"jest": {
"preset": "jest-expo",
"transformIgnorePatterns": [
"node_modules/(?!(jest-)?react-native|react-clone-referenced-element|@react-native-community|expo(nent)?|@expo(nent)?/.*|react-navigation|@react-navigation/.*|@unimodules/.*|unimodules|sentry-expo|native-base)"
]
},
"private": true
}
index. js
import { AppRegistry, Platform } from 'react-native';
import App from './App';
console.log(Platform.OS);
AppRegistry.registerComponent('insider', () => App);
console.log(Platform.isPad);
if (Platform.OS === 'web') {
const rootTag = document.getElementById('root') || document.getElementById('main');
AppRegistry.runApplication('insider', { rootTag });
}
Приложение. js
import React from 'react';
import {Text} from 'react-native';
export default function App() {
return <Text>Test Text</Text>
}
Трудно сказать, что уместно, но это обзор того, что у меня есть, если потребуется какая-либо дополнительная информация, я с радостью предоставлю ее.