Apollo-link-rest: Penyebab mutasi: GALAT GALAT: Galat jaringan: global tidak ditentukan

Dibuat pada 12 Jul 2019  ·  5Komentar  ·  Sumber: apollographql/apollo-link-rest


Saat ini menggunakan Angular 7, tautan apollo-rest 0.7.3

Saya akhirnya membuat mutasi berfungsi sebagian dan ada satu masalah di mana global tidak diinisialisasi dan itu menyebabkan kesalahan ini:

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

Saya menginisialisasi klien

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

Saya memiliki mutasi ini:

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

Saya menjalankannya seperti ini:

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

Garis yang menyebabkan kesalahan ada di bawah pada gambar

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

Adakah yang tahu mengapa objek global global.FileList ini tidak terdefinisi?

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

Semua 5 komentar

ini sepertinya masalah angular-cli awalnya karena saya harus menambahkan baris ke polyfills.ts

https://github.com/angular/angular-cli/issues/8160
Tetapi tanggapan untuk ini seperti: globals does not exists in browser and should not be in the client-side code ?

Haruskah itu ada di REST LINK?

Itu berita bagi saya, di React-Native dan lingkungan lainnya, global memang ada? Di browser, objek global adalah jendela, jadi Anda bisa melakukan sesuatu seperti: window.global = window untuk menjamin bahwa itu akan ada?

Hal yang saya lakukan adalah seperti yang disarankan pada Angular tetapi mereka menganggap ini sebagai masalah. inilah yang saya lakukan di bagian bawah:

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

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

Saya setuju ini adalah peretasan, tetapi hanya Anda yang tahu apakah kode Anda seharusnya berjalan di browser, atau di reaksi asli. Jika Anda mengetahui/dapat menautkan ke cara yang lebih baik untuk menulis Apollo-link-rest, saya akan mendukung perubahan! Sayangnya window tidak ada di ponsel, jadi kami agak buntu di sini!

Saya baru saja menyentuh masalah ini .. apakah sudah ada solusinya?

Apakah halaman ini membantu?
0 / 5 - 0 peringkat