Apollo-link-rest: Mutation verursacht :ERROR Fehler: Netzwerkfehler: global ist nicht definiert

Erstellt am 12. Juli 2019  ·  5Kommentare  ·  Quelle: apollographql/apollo-link-rest


Verwendet derzeit Angular 7, apollo-rest link 0.7.3

Endlich funktioniert die Mutation teilweise und es gibt ein Problem, bei dem global nicht initialisiert ist und diesen Fehler verursacht:

core.js:15724 ERROR Error: Network error: global is not defined
    at new ApolloError (bundle.esm.js:60)
    at Object.error (bundle.esm.js:1032)
    at notifySubscription (Observable.js:134)
    at onNotify (Observable.js:165)
    at SubscriptionObserver.error (Observable.js:224)
    at Object.error (Observable.js:463)
    at notifySubscription (Observable.js:134)
    at onNotify (Observable.js:165)
    at SubscriptionObserver.error (Observable.js:224)
    at bundle.umd.js:807

Ich initialisiere den Client

const restLink = new RestLink({
    uri: 'http://localhost:5000/api',
    credentials: 'same-origin',
    headers: {
      Accept: 'application/json',
      'Content-Type': 'application/json'
    }
  });
  return {
    link: restLink,
    cache
  };

Ich habe diese Mutation:

export const addTodo = gql`
    mutation addTodo($input: Todo!){
      addTodo(input: $input) @rest( type: "Todo", method: "POST", path: "/todos" ) {
       ...todoFragment
      }
  }
  ${todoFragment}
`;

Ich führe es so aus:

 add(text: string): void {

    this.apollo.mutate({
      mutation: addTodo,
      variables: {
        input: {
          description: text,
          completed: false
        }
      }
    }).subscribe(({data}) => {
      console.log('got data', data);
    }, (error) => {
      console.log('there was an error sending the query', error);
    });

Die Zeile, die den Fehler verursacht, ist unten auf dem Bild

Screen Shot 2019-07-12 at 12 17 35 PM

Haben Sie eine Idee, warum dieses globale Objekt global.FileList definiert ist?

// FileList/File are only available in some browser contexts
        // Notably: *not available* in react-native.
        if ((global.FileList && object instanceof FileList) ||
            (global.File && object instanceof File)) {
            // Object is a FileList or File object => no keys to convert!
            return object;
        }
help wanted 🛠 question❔

Alle 5 Kommentare

Dies scheint zunächst ein Winkel-Cli-Problem zu sein, da ich der polyfills.ts eine Linie hinzufügen musste

https://github.com/angular/angular-cli/issues/8160
Aber die Antwort dafür lautet: globals does not exists in browser and should not be in the client-side code ?

Sollte es im REST LINK drin sein?

Das ist mir neu, in React-Native und anderen Umgebungen existiert global ? Im Browser ist das global Objekt das Fenster, also könnten Sie etwas tun wie: window.global = window um sicherzustellen, dass es existiert?

Das, was ich getan habe, war wie auf dem Angular vorgeschlagen, aber sie betrachten dies als Scheiße. das habe ich ganz unten gemacht:

https://github.com/fkolar/todo-rest/blob/master/src/polyfills.ts

https://github.com/fkolar/todo-rest

Ich stimme zu, dass dies ein Hack ist, aber nur Sie wissen, ob Ihr Code in einem Browser oder auf Reactive-Native ausgeführt werden soll. Wenn Sie einen besseren Weg zum Schreiben von Apollo-Link-Rest kennen/verlinken können, würde ich eine Änderung unterstützen! Leider existiert window nicht auf dem Handy, also stecken wir hier ein bisschen fest!

Ich habe gerade auf dieses Problem gestoßen. Gibt es bereits eine Lösung?

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen