React Native и Apollo: не удается найти переменную: документ - PullRequest
1 голос
/ 30 октября 2019

Я получаю сообщение об ошибке, которое было указано в заголовке, и я не уверен, как от него избавиться и заставить мое приложение работать правильно.

Я пытался ее решить, но пока не могу найти решение. Единственное, что я обнаружил в связи с моей ошибкой, это комментарий: «Вы не можете использовать документ в React Native, вы можете создать фон позади меню, а затем на фоне прессы вы можете его скрыть». написанный Файидом. Хотя это может показаться моим ответом, я не уверен, как создать этот фон. Вот мой код:

import React from 'react';
import ReactDOM from 'react-dom';
import {Route, Link, BrowserRouter as Router} from 'react-router-dom';
import news from './components/News';
import eating from './components/Eating';
import LoginForm from './components/LoginForm';
import ApolloClient from 'apollo-client';
import {ApolloProvider} from 'react-apollo';
import {HttpLink} from 'apollo-link-http';
import {InMemoryCache} from 'apollo-cache-inmemory';

const client= new ApolloClient({
  link: new HttpLink({uri:'https://api-useast.graphcms.com/v1/ck25kwqhb10bg01cx4o1i5czu/master'}),
  cache:new InMemoryCache()
})

const routing = (
  <Router>
    <Route path="/" component={LoginForm} />
    <Route path="/news" component={News} />
    <Route path="/eating" component={Eating} />
  </Router>
)


ReactDOM.render((
  <ApolloProvider client={client}>
    routing
  </ApolloProvider>
),
  document.getElementById('root')
)

Это мой файл package.json:

{
  "main": "node_modules/expo/AppEntry.js",
  "scripts": {
    "start": "expo start",
    "android": "expo start --android",
    "ios": "expo start --ios",
    "web": "expo start --web",
    "eject": "expo eject"
  },
  "dependencies": {
    "apollo-cache-inmemory": "^1.6.3",
    "apollo-client": "^2.6.4",
    "apollo-link-http": "^1.5.16",
    "expo": "^35.0.0",
    "graphql": "^14.5.8",
    "react": "16.8.3",
    "react-apollo": "^3.1.3",
    "react-dom": "^16.8.3",
    "react-native": "https://github.com/expo/react-native/archive/sdk-35.0.0.tar.gz",
    "react-native-web": "^0.11.7",
    "react-router-dom": "^5.1.2"
  },
  "devDependencies": {
    "babel-preset-expo": "^7.1.0"
  },
  "private": true
}

Я хочу иметь возможность загрузить свое приложение без ошибок.

1 Ответ

0 голосов
/ 30 октября 2019

Я решил это, мне пришлось скачать реакцию-маршрутизатор-родной и не реагировать-маршрутизатор-DOM. Вот и все. Вместо:

import React from 'react';
import ReactDOM from 'react-dom';
import {Route, Link, BrowserRouter as Router} from 'react-router-dom';
mport ApolloClient from 'apollo-client';
import {ApolloProvider} from 'react-apollo';
import {HttpLink} from 'apollo-link-http';
import {InMemoryCache} from 'apollo-cache-inmemory';

Я должен был сделать:

import React, {Component} from 'react';
import {Route, Link, NativeRouter as Router} from 'react-router-native';
import ApolloClient from 'apollo-client';
import {ApolloProvider} from 'react-apollo';
import {HttpLink} from 'apollo-link-http';
import {InMemoryCache} from 'apollo-cache-inmemory';

И заменить этот DOM-рендеринг для компонента класса.

...