Apollo-link-rest: Causas de la mutación: ERROR Error: Error de red: global no está definido

Creado en 12 jul. 2019  ·  5Comentarios  ·  Fuente: apollographql/apollo-link-rest


Actualmente usando Angular 7, enlace apollo-rest 0.7.3

Finalmente consigo que la mutación funcione parcialmente y hay un problema en el que global no está inicializado y causa este error:

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

Inicializo cliente

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

Tengo esta mutación:

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

Lo ejecuto así:

 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);
    });

La línea que causa el error está debajo de la imagen.

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

¿Alguna idea de por qué este objeto global global.FileList no está definido?

// 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❔

Todos 5 comentarios

esto parece inicialmente un problema de angular-cli ya que tuve que agregar una línea a polyfills.ts

https://github.com/angular/angular-cli/issues/8160
Pero la respuesta para esto es como: globals does not exists in browser and should not be in the client-side code ?

¿Debería estar en el REST LINK?

Eso es una novedad para mí, en React-Native y otros entornos, global ¿existe? En el navegador, el objeto global es la ventana, por lo que podría hacer algo como: window.global = window para garantizar que existirá.

Lo que hice fue lo que se sugirió en el Angular, pero lo consideran una mierda. esto es lo que hice al final:

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

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

Estoy de acuerdo en que esto es un truco, pero solo usted sabe si se supone que su código se ejecuta en un navegador o en react-native. Si conoce / puede vincular a una mejor manera de escribir Apollo-link-rest, ¡apoyaría un cambio! Desafortunadamente, window no existe en el móvil, ¡así que estamos un poco atascados aquí!

Acabo de abordar este problema ... ¿ya hay una solución?

¿Fue útil esta página
0 / 5 - 0 calificaciones