Ich implementiere ein Beispiel von https://github.com/moroshko/react-autosuggest
Wichtiger Code ist wie folgt:
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);
}
Dieser Code zum Kopieren und Einfügen aus dem Beispiel (der funktioniert) hat einen Fehler in meinem Projekt:
Error: Cannot resolve module 'json' in /home/juanda/redux-pruebas/components
Wenn ich das Präfix json herausnehme!:
import suburbs from '../suburbs.json';
Auf diese Weise habe ich beim Kompilieren keine Fehler erhalten (der Import ist abgeschlossen). Bei der Ausführung sind jedoch Fehler aufgetreten:
Uncaught TypeError: _jsonfilesSuburbsJson2.default.filter is not a function
Wenn ich es debugge, sehe ich, dass Vororte ein Objektc und kein Array sind, sodass die Filterfunktion nicht definiert ist.
Im Beispiel wird jedoch kommentiert, dass Vorschläge ein Array sind. Wenn ich solche Vorschläge umschreibe, funktioniert alles:
const suggestions = suburbs
var suggestions = [ {
'suburb': 'Abbeyard',
'postcode': '3737'
}, {
'suburb': 'Abbotsford',
'postcode': '3067'
}, {
'suburb': 'Aberfeldie',
'postcode': '3040'
} ].filter(suburbObj => suburbMatchRegex.test(suburbObj.suburb))
Also ... was für ein Json! Präfix macht im Import?
Warum kann ich es nicht in meinen Code einfügen? Eine Babel-Konfiguration?
quelle
Antworten:
Zunächst müssen Sie installieren
json-loader
:Dann gibt es zwei Möglichkeiten, wie Sie es verwenden können:
Um zu vermeiden, dass Sie
json-loader
jeweilsimport
etwas hinzufügen, können Siewebpack.config
dieser Zeile Folgendes hinzufügen :Importieren Sie dann solche
json
DateienVerwenden Sie
json-loader
direkt in Ihremimport
, wie in Ihrem Beispiel:Hinweis: In
webpack 2.*
anstelle von Schlüsselwortloaders
muss verwendet werdenrules
.,auch
webpack 2.*
verwendetjson-loader
standardmäßigquelle
{ test: /\.json$/, loader: 'json-loader' }
json-loader lädt keine json-Datei, wenn es sich um ein Array handelt. In diesem Fall müssen Sie beispielsweise sicherstellen, dass es einen Schlüssel enthält
quelle
Dies funktioniert nur bei React & React Native
quelle
Mit
json-loader
installiert, können Sie jetzt einfach verwenden:oder noch einfacher:
quelle
Fand diesen Thread , wenn ich nicht laden konnte
json-file
mitES6 TypeScript 2.6
. Ich bekam immer wieder diesen Fehler:Damit es funktioniert, musste ich zuerst das Modul deklarieren. Ich hoffe, das spart jemandem ein paar Stunden.
Wenn ich weglassen versuche
loader
ausjson-loader
Ich habe die folgenden Fehler auswebpack
:quelle
Knoten v8.5.0 +
Sie benötigen keinen JSON-Loader. Node stellt ECMAScript-Modulen (ES6-Modulunterstützung) das
--experimental-modules
Flag zur Verfügung. Sie können es so verwendenDann ist es sehr einfach
Dann haben Sie es an die Variable gebunden
myJSON
.quelle