sto implementando un esempio da https://github.com/moroshko/react-autosuggestES6 implementazione dei moduli, come caricare un file JSON
codice importante è come questo:
import React, { Component } from 'react';
import suburbs from 'json!../suburbs.json';
function getSuggestions(input, callback) {
const suggestions = suburbs
.filter(suburbObj => suburbMatchRegex.test(suburbObj.suburb))
.sort((suburbObj1, suburbObj2) =>
suburbObj1.suburb.toLowerCase().indexOf(lowercasedInput) -
suburbObj2.suburb.toLowerCase().indexOf(lowercasedInput)
)
.slice(0, 7)
.map(suburbObj => suburbObj.suburb);
// 'suggestions' will be an array of strings, e.g.:
// ['Mentone', 'Mill Park', 'Mordialloc']
setTimeout(() => callback(null, suggestions), 300);
}
Questo codice copia-incolla da l'esempio (che funziona) , ha un errore nel mio progetto:
Error: Cannot resolve module 'json' in /home/juanda/redux-pruebas/components
Se prendo il preffix jSON !:
import suburbs from '../suburbs.json';
In questo modo non ho ricevuto errori in fase di compilazione (l'importazione è stata completata). Tuttavia ho avuto errori quando ho eseguirlo:
Uncaught TypeError: _jsonfilesSuburbsJson2.default.filter is not a function
Se metto a punto che riesco a vedere è una periferia ObjectC, non una matrice così funzione di filtro non è definita.
Tuttavia nell'esempio i suggerimenti commentati sono un array. Se riscrivo suggerimenti come questo, tutto funziona:
const suggestions = suburbs
var suggestions = [ {
'suburb': 'Abbeyard',
'postcode': '3737'
}, {
'suburb': 'Abbotsford',
'postcode': '3067'
}, {
'suburb': 'Aberfeldie',
'postcode': '3040'
} ].filter(suburbObj => suburbMatchRegex.test(suburbObj.suburb))
Quindi ... che json! sta facendo il prefisso nell'importazione?
Perché non posso inserirlo nel mio codice? Qualche configurazione babel?
grazie mille! La documentazione di json-loader mostrava effettivamente le impostazioni per webpack v2, quindi niente ha funzionato per me (usando v1!). Quindi per tutti voi là fuori, usate caricatori, non regole! Inoltre, cambia "usa" all'interno di quell'oggetto per essere "loader", proprio come questa risposta! – nbkhope
Come @ alexander-t menzionato, ora puoi importare file json senza il json-loader, ma, se ti imbatti in un problema in cui il json-loader non viene riconosciuto, dovresti semplicemente aggiungere un suffisso '-loader' nei caricatori config come questo: '{test: /\.json$/, loader: 'json-loader'}' – cvetanov
Perché il json importato non viene copiato in outDir se viene importato tramite dattiloscritto? – FrankerZ