2016-05-05 4 views
1

Ich habe versucht, einen Antrag mit Apollo-Client in nicht-Apollo GraphQL Server zu machen, wie unten:Es war uns nicht nicht-Apollo GraphQL Server von Apollo-Client zur Abfrage

import ApolloClient, { createNetworkInterface } from 'apollo-client'; 

// Register gql globally 
import { registerGqlTag } from 'apollo-client/gql'; 
registerGqlTag(); 

const networkInterface = createNetworkInterface(' http://localhost:8080/graphql', { 
    headers: { 
    'Content-type': "application/json" 
    } 
}); 

var client = new ApolloClient({ 
    networkInterface 
}); 

client.query({ 
    query: gql` 
    query getTodo($todoId: Int!) { 
     node(id: $todoId) { 
     ... on Todo { 
      id 
      text 
     } 
     } 
    } 
    `, 
    variables: { 
    todoId: "todo:100000", 
    }, 
    forceFetch: false, 
}).then((graphQLResult) => { 
    var errors = graphQLResult.errors; 
    var data = graphQLResult.data; 

    if (data) { 
    console.log('got data', data); 
    } 

    if (errors) { 
    console.log('got some GraphQL execution errors', errors); 
    } 
}).catch((error) => { 
    console.log('there was an error sending the query', error); 
}); 

Allerdings halte ich erhalte eine Fehlermeldung, während der Code ausgeführt wird : there was an error sending the query [ReferenceError: fetch is not defined]

Ich versuche, das Problem damit zu suchen, aber die Dokumentation ist nicht wirklich hilfreich.

Vielen Dank.

+0

ich bekam eine Antwort von einem Apollo Mitglied im Zusammenhang mit diesem Problem https://github.com/apollostack/apollo-client/issues/177 –

Antwort

3

Hinter den Kulissen verwendet der Apollo-Client fetch, was einen neuen Standard für die Erstellung von HTTP-Anfragen darstellt. Es ist in den meisten gängigen Browsern vorhanden, wird aber nicht in Knoten oder IE/Edge gefunden. Das Team hat den Aufruf zum "Fetch" gemacht, weil seine Akzeptanz wächst und die Verfügbarkeit von Polyfills für ältere Browser und Knoten steigt.

Wir haben einen Abschnitt der Dokumentation, um dieses Problem hier: http://docs.apollostack.com/apollo-client/core.html#fetch-polyfill

Für einen Einblick in die Entscheidung mit holen zu gehen, überprüfen Sie dieses Problem aus: https://github.com/apollostack/apollo-client/pull/126

+0

Aktuelle Discu sions finden Sie hier: https://github.com/apollostack/apollo-client/issues/269 und https://github.com/apollostack/apollo-client/issues/645 (Der erste Link in James ' Antwort ist tot) – Michiel

1

Wenn Sie in Knoten Umgebung arbeiten müssen Sie global Objekt holen hinzufügen:

import fetch from 'node-fetch'; 

global.fetch = fetch; 
Verwandte Themen