Saya menerapkan contoh dari https://github.com/moroshko/react-autosuggest
Kode penting seperti ini:
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);
}
Kode salin-tempel ini dari contoh (yang berfungsi), memiliki kesalahan dalam proyek saya:
Error: Cannot resolve module 'json' in /home/juanda/redux-pruebas/components
Jika saya mengambil awalan json !:
import suburbs from '../suburbs.json';
Dengan cara ini saya tidak mendapatkan kesalahan pada waktu kompilasi (impor selesai). Namun saya mendapat kesalahan saat menjalankannya:
Uncaught TypeError: _jsonfilesSuburbsJson2.default.filter is not a function
Jika saya men-debugnya, saya bisa melihat pinggiran kota adalah objectc, bukan array sehingga fungsi filter tidak ditentukan.
Namun dalam contoh, saran yang dikomentari adalah larik. Jika saya menulis ulang saran seperti ini, semuanya berfungsi:
const suggestions = suburbs
var suggestions = [ {
'suburb': 'Abbeyard',
'postcode': '3737'
}, {
'suburb': 'Abbotsford',
'postcode': '3067'
}, {
'suburb': 'Aberfeldie',
'postcode': '3040'
} ].filter(suburbObj => suburbMatchRegex.test(suburbObj.suburb))
Jadi ... apa json! awalan lakukan di impor?
Mengapa saya tidak dapat memasukkannya ke dalam kode saya? Beberapa konfigurasi babel?
javascript
json
reactjs
webpack
pengguna2670996
sumber
sumber
Jawaban:
Pertama-tama Anda perlu menginstal
json-loader
:Lalu, ada dua cara bagaimana Anda bisa menggunakannya:
Untuk menghindari penambahan
json-loader
setiapimport
Anda dapat menambahkan kewebpack.config
baris ini:loaders: [ { test: /\.json$/, loader: 'json-loader' }, // other loaders ]
Kemudian impor
json
file seperti iniimport suburbs from '../suburbs.json';
Gunakan
json-loader
langsung di Andaimport
, seperti dalam contoh Anda:import suburbs from 'json!../suburbs.json';
Catatan: Dalam
webpack 2.*
alih-alih kata kunciloaders
perlu digunakanrules
.,juga
webpack 2.*
digunakanjson-loader
secara defaultsumber
{ test: /\.json$/, loader: 'json-loader' }
json-loader tidak memuat file json jika itu array, dalam hal ini Anda perlu memastikan itu memiliki kunci, misalnya
{ "items": [ { "url": "https://api.github.com/repos/vmg/redcarpet/issues/598", "repository_url": "https://api.github.com/repos/vmg/redcarpet", "labels_url": "https://api.github.com/repos/vmg/redcarpet/issues/598/labels{/name}", "comments_url": "https://api.github.com/repos/vmg/redcarpet/issues/598/comments", "events_url": "https://api.github.com/repos/vmg/redcarpet/issues/598/events", "html_url": "https://github.com/vmg/redcarpet/issues/598", "id": 199425790, "number": 598, "title": "Just a heads up (LINE SEPARATOR character issue)", }, ..... other items in array ..... ]}
sumber
Ini hanya berfungsi di React & React Native
const data = require('./data/photos.json'); console.log('[-- typeof data --]', typeof data); // object const fotos = data.xs.map(item => { return { uri: item }; });
sumber
Dengan
json-loader
terinstal, sekarang Anda cukup menggunakan:import suburbs from '../suburbs.json';
atau, lebih sederhananya:
import suburbs from '../suburbs';
sumber
Menemukan utas ini ketika saya tidak dapat memuat
json-file
denganES6 TypeScript 2.6
. Saya terus mendapatkan kesalahan ini:Untuk membuatnya bekerja, saya harus mendeklarasikan modul terlebih dahulu. Saya harap ini akan menghemat beberapa jam untuk seseorang.
declare module "json-loader!*" { let json: any; export default json; } ... import suburbs from 'json-loader!./suburbs.json';
Jika saya mencoba untuk menghilangkan
loader
darijson-loader
saya mendapat kesalahan berikut dariwebpack
:sumber
Node v8.5.0 +
Anda tidak membutuhkan pemuat JSON. Node menyediakan ECMAScript Modules (dukungan ES6 Module) dengan
--experimental-modules
bendera, Anda dapat menggunakannya seperti iniMaka itu sangat sederhana
import myJSON from './myJsonFile.json'; console.log(myJSON);
Kemudian Anda akan mengikatnya ke variabel
myJSON
.sumber