Estoy implementando un ejemplo de https://github.com/moroshko/react-autosuggest
El código importante es así:
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);
}
Este código de copiar y pegar del ejemplo (que funciona), tiene un error en mi proyecto:
Error: Cannot resolve module 'json' in /home/juanda/redux-pruebas/components
Si saco el prefijo json !:
import suburbs from '../suburbs.json';
De esta manera no obtuve errores en el momento de la compilación (la importación está lista). Sin embargo, obtuve errores cuando lo ejecuto:
Uncaught TypeError: _jsonfilesSuburbsJson2.default.filter is not a function
Si lo depuro, puedo ver que los suburbios son un objectc, no una matriz, por lo que la función de filtro no está definida.
Sin embargo, en el ejemplo se comentan las sugerencias es una matriz. Si reescribo sugerencias como esta, todo funciona:
const suggestions = suburbs
var suggestions = [ {
'suburb': 'Abbeyard',
'postcode': '3737'
}, {
'suburb': 'Abbotsford',
'postcode': '3067'
}, {
'suburb': 'Aberfeldie',
'postcode': '3040'
} ].filter(suburbObj => suburbMatchRegex.test(suburbObj.suburb))
Entonces ... ¡qué json! prefijo está haciendo en la importación?
¿Por qué no puedo ponerlo en mi código? ¿Alguna configuración de babel?