Apollo-link-rest: Causas da mutação: ERROR Error: Network error: global not defined

Criado em 12 jul. 2019  ·  5Comentários  ·  Fonte: apollographql/apollo-link-rest


Atualmente usando Angular 7, link apollo-rest 0.7.3

Finalmente consegui fazer a mutação funcionar parcialmente e há um problema em que global não foi inicializado e causa este erro:

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

Eu inicializo o 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
  };

Eu tenho esta mutação:

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

Eu executo assim:

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

A linha que causa o erro está abaixo da imagem

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

Alguma idéia de por que esse objeto global global.FileList é indefinido?

// 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 comentários

isso parece inicialmente um problema angular-cli, pois tive que adicionar uma linha ao polyfills.ts

https://github.com/angular/angular-cli/issues/8160
Mas a resposta para isso é: globals does not exists in browser and should not be in the client-side code ?

Ele deveria estar lá no REST LINK?

Isso é novidade para mim, no React-Native e em outros ambientes, global existe? No navegador, o objeto global é a janela, então você poderia fazer algo como: window.global = window para garantir que ela existiria?

O que eu fiz foi conforme sugerido no Angular, mas eles consideram isso um inferno. isso é o que eu fiz na parte inferior:

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

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

Eu concordo que isso é um hack, mas só você sabe se seu código deve ser executado em um navegador ou no react-native. Se você conhece / pode criar um link para uma maneira melhor de escrever Apollo-link-rest, eu apoiaria uma mudança! Infelizmente window não existe no celular, então estamos um pouco presos aqui!

Acabei de abordar esse problema .. já existe uma solução?

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

sinisterra picture sinisterra  ·  6Comentários

lextas picture lextas  ·  4Comentários

i-Hun picture i-Hun  ·  4Comentários

Simply007 picture Simply007  ·  5Comentários

timhwang21 picture timhwang21  ·  7Comentários