[解決済み] ES6モジュールの実装、jsonファイルの読み込み方法
質問
の例を実装しています。 https://github.com/moroshko/react-autosuggest
重要なコードはこのようなものです。
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);
}
この例からのコピーペーストのコード(それは動作します)は、私のプロジェクトでエラーを持っています。
Error: Cannot resolve module 'json' in /home/juanda/redux-pruebas/components
接頭辞のjsonを取ると!?
import suburbs from '../suburbs.json';
この方法では、コンパイル時にエラーは出ませんでした(インポートが完了している)。 しかし、実行するとエラーが発生します。
Uncaught TypeError: _jsonfilesSuburbsJson2.default.filter is not a function
デバッグしてみると、suburbsは配列ではなくobjectcなので、filter関数が定義されていないことがわかります。
しかし、この例ではsuggestionsは配列であるとコメントされています。このようにsuggestionsを書き換えると、すべてうまくいきます。
const suggestions = suburbs
var suggestions = [ {
'suburb': 'Abbeyard',
'postcode': '3737'
}, {
'suburb': 'Abbotsford',
'postcode': '3067'
}, {
'suburb': 'Aberfeldie',
'postcode': '3040'
} ].filter(suburbObj => suburbMatchRegex.test(suburbObj.suburb))
で...json!prefixはimportでどうなってるんだ?
なぜ、私のコードにそれを置くことができないのでしょうか?何らかのバベルの設定?
どのように解決するのですか?
まず最初に
json-loader
:
npm i json-loader --save-dev
では、どのように使うかというと、2つの方法があります。
-
を追加しないようにするために
json-loader
を追加しないようにするため、各import
に追加することができます。webpack.config
という行を追加します。loaders: [ { test: /\.json$/, loader: 'json-loader' }, // other loaders ]
次に、インポートする
json
のようなファイルをインポートします。import suburbs from '../suburbs.json';
-
使用方法
json-loader
の中に直接import
に直接記述します。import suburbs from 'json!../suburbs.json';
注意
で
webpack 2.*
キーワードの代わりに
loaders
を使用する必要があります。
rules
.,
また
webpack 2.*
は
json-loader
をデフォルトで使用します。
*.json ファイルは、json-loader なしでサポートされるようになりました。まだ使用することができます。壊れるような変更ではありません。
関連
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] cURLでJSONデータをPOSTするにはどうすればよいですか?
-
[解決済み] Microsoft JSONの日付はどのようにフォーマットするのですか?
-
[解決済み] JSONファイルをprettyprintする方法は?
-
[解決済み] JSONデータをファイルに書き込むにはどうしたらいいですか?
-
[解決済み] Notepad++でJSONを再フォーマットする方法は?
-
[解決済み】「datetime.datetime not JSON serializable」を克服する方法とは?
-
[解決済み] ジェスト あるクラスの特定のメソッドをモックする方法
-
[解決済み] 上級者向けJavaScript。この関数はなぜ括弧でくくられるのですか?重複
-
[解決済み] ExtJS 4のイベントハンドリングについて
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ReactでJSONファイルをインポートする
-
[解決済み】ECMAScript 6でJSONファイルをインポートする方法は?
-
[解決済み] bootstrap のポップオーバーがすべての要素の上に表示されない
-
[解決済み] アサインの左側にJavascriptのオブジェクトブラケット表記({ ナビゲーション } =)があります。
-
[解決済み] React js 親コンポーネントから子コンポーネントの状態を変更する
-
[解決済み] JavaScriptで文字列を数値に変換する最速の方法は何ですか?
-
[解決済み] サブドメインにまたがってlocalStorageを使用する
-
[解決済み] AngularJS - ngRepeatフィルタリングされた結果の参照を取得する方法
-
[解決済み] Javascriptで動的に命名されたメソッドを呼び出すにはどうすればよいですか?
-
[解決済み] モデルフェッチ時に1をtrueに、0をfalseに変換する方法