J'ai un problème depuis deux jours; Je veux lire un JSON local à partir de mon dossier public sur mon React application créée avec react-app.
Voici ma structure de projet:
publique
les données
src
composants
Pourquoi je place mon fichier dans le dossier public
? Si je crée mon projet avec un fichier dans le dossier src
, mon fichier sera inclus dans le main.js
Généré par la commande yarn build
.
Je souhaite modifier mon fichier json sans toujours reconstruire mon application.
Je ne peux donc pas utiliser de code comme:
import Data from './mato.json'
…ou:
export default { 'mydata' : 'content of mato.json'}
import data from 'mydata';
J'ai essayé de récupérer mon fichier .json mais le "schéma de fichiers" n'est pas ami avec fetch()
& chrome ..
(Erreur Chrome: "index.js: 6 Fetch API ne peut pas charger le fichier: /// D: /projects/data/mato.json. Le schéma d'URL" fichier "n'est pas pris en charge.")
Voici mon code pour aller chercher:
fetch(`${process.env.PUBLIC_URL}/data/mato.json`)
.then((r) => r.json())
.then((data) =>{
ReactDOM.render(<App appData={JSON.stringify(data)}/>, document.getElementById('root'));
})
Cela ne fonctionne qu'avec Firefox. J'ai également essayé mode: 'cors'
Ne fait pas mieux.
Et bien sûr, je n'ai pas de serveur - c'est un projet local - donc si quelqu'un sait comment je peux lire mon fichier JSON localement, j'apprécierai beaucoup.
Je pense que votre argument de récupération est faux. Ça devrait être
fetch('data/mato.json')
Tant que les fichiers de données sont placés dans un dossier public, cela devrait fonctionner dans Chrome également comme dans mon projet. Donc, chercher ('data/mato.json') lui suffit.