Actuellement en utilisant Angular 7, apollo-rest link 0.7.3
J'obtiens enfin la mutation qui fonctionne partiellement et il y a un problème où global
n'est pas initialisé et cela provoque cette erreur :
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
j'initialise le 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
};
J'ai cette mutation :
export const addTodo = gql`
mutation addTodo($input: Todo!){
addTodo(input: $input) @rest( type: "Todo", method: "POST", path: "/todos" ) {
...todoFragment
}
}
${todoFragment}
`;
Je l'exécute comme ceci :
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 ligne qui cause l'erreur est ci-dessous sur l'image
Avez-vous une idée de la raison pour laquelle cet objet global global.FileList
n'est pas défini ?
// 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;
}
cela semble être initialement un problème angulaire-cli car je devais ajouter une ligne au polyfills.ts
https://github.com/angular/angular-cli/issues/8160
Mais la réponse pour ceci est comme : globals does not exists in browser and should not be in the client-side code
?
Cela devrait-il être dans le REST LINK ?
C'est nouveau pour moi, dans React-Native et d'autres environnements, global
existe-t-il ? Dans le navigateur, l'objet global
est la fenêtre, donc vous pourriez faire quelque chose comme : window.global = window
pour garantir qu'il existerait ?
La chose que j'ai faite était comme suggéré sur l'Angular, mais ils considèrent cela comme un diable. c'est ce que j'ai fait en bas :
https://github.com/fkolar/todo-rest/blob/master/src/polyfills.ts
Je suis d'accord qu'il s'agit d'un hack, mais vous seul savez si votre code est censé s'exécuter dans un navigateur ou sur react-native. Si vous connaissez/pouvez créer un lien vers une meilleure façon d'écrire Apollo-link-rest, je soutiendrais un changement! Malheureusement window
n'existe pas sur mobile, nous sommes donc un peu coincés ici !
Je viens de tomber sur ce problème. Y a-t-il déjà une solution?