SoTrxII / marmiton-api

A convenient way to search for recipes in marmiton.org
MIT License
27 stars 3 forks source link

Bug with webpack 5 #2

Closed ByJfMarie closed 2 years ago

ByJfMarie commented 2 years ago

Bonjour,

J’aurais une question à poser, j’essaie d’utiliser votre API Marmiton pour un projet sur vuejs3 dsqdqsq J’ai essayé de trouver des solutions sur internet mais je ne trouve rien et je ne trouve surtout pas le fichier ou ajouter le ‘resolve.fallback’

Je vous remercie par avance de votre réponse

SoTrxII commented 2 years ago

Bonjour, Je pense que le problème vient du fait que certains modules de Nodejs sont utilisés dans la bibliothèque, et que ces modules ne sont pas disponibles pour le navigateur ; en tous cas c'est ce que je comprends de l'erreur de Webpack.

Je pense qu'il faut que vous importiez le polyfill pour zlib dans votre config Vue.

D'après ce post , il faudrait créer un fichier vue.config.js avec une section configureWebpack, dans cette section vous pourriez alors rajouter ce qu'il vous demande, c'est à dire :

{
  resolve: {
        fallback: { "zlib": require.resolve("browserify-zlib") }
  }
}  

Il vous faudra donc aussi installer le module browerify-zlib.

Dans tous les cas, je ne savais pas que Webpack avait supprimé les polyfills automatiques. Si cela se confirme, je rajouterai un avertissement sur le readme.

Bonne chance pour votre configuration !

ByJfMarie commented 2 years ago

Suite à vos informations, j'ai pu compiler après avoir add ce qu'il faut. Il ne me reste juste un warning : image

Par contre lors de l'appelle d'une requête j'ai des erreurs de permissions, avez vous une idée ? image

Merci pour vos réponses

SoTrxII commented 2 years ago

Le warning est dû au fait que le module encoding est aussi demandé, il vous faudra peut être le polyfill également, comme pour zlib.

L'erreur lors de la requête est malheureusement normale. Le site marmiton (comme beaucoup d'autres) est protégé par les CORS. Le but de cette protection est d'éviter qu'un site web fasse appel aux ressources d'un autre, et c'est précisément ce qui est fait puisque vous utilisez votre site web local pour en appeler un autre (marmiton).

Mon conseil serait de relayer le requêtage de marmiton à votre backend plutôt que de le faire en frontend, quitte à exposer un petit serveur Web ou même une simple lamdba pour vos traitements.