Реагировать на проблемы Windows после извлечения Expo - PullRequest
0 голосов
/ 13 февраля 2020

Мы создали приложение React Native с использованием Expo, и теперь у нас есть требование для его производства за Windows. Так как Expo не поддерживает Windows, у нас есть ejected проект от Expo до проекта Bare React Native.

Мы столкнулись с множеством ошибок, касающихся пакетов и т. Д. c, которые нам удалось устранить, однако теперь мы застряли с ошибкой, для которой мы не можем найти решение.

Мы настраиваем проект windows в соответствии с инструкциями, то есть устанавливаем пакеты, запускаем react-native windows и затем запускаем проект с react-native run windows.

Когда мы запускаем проект в консоли браузера, мы получаем следующие 2 ошибки:

  1. _RNGestureHandlerModule.default is undefined
  2. 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>
}

Трудно сказать, что уместно, но это обзор того, что у меня есть, если потребуется какая-либо дополнительная информация, я с радостью предоставлю ее.

...