私のJavaScriptコードには、私のJavaScriptソースファイルと同じディレクトリにあるJSONファイルをいくつか含めたいと思います。
他のJavaScriptファイルをインクルードしたい場合は、単にrequire
を使用できます。今、私はJSONを取得するためにreadFileSync
と__dirname
を使っています。
JSONファイルをロードできるように、requireに似たようなものはありますか?
ノードv0.5.x以降では、jsファイルが必要になるのと同じようにJSONを必要とすることができます。
var someObject = require('./somefile.json')
ES6の場合:
import someObject from ('./somefile.json')
JSONファイルには明示的なエクスポートステートメントは必要ありません。 Javascriptファイルとして使用するためにエクスポートする必要はありません。
そのため、有効なJSONドキュメントにはrequire
だけを使用できます。
data.json
{
"name": "Freddie Mercury"
}
main.js
var obj = require('data.json');
console.log(obj.name);
//Freddie Mercury
いいえ。readFile
またはreadFileSync
のどちらかを使用します(後者は起動時のみ)。
またはのような既存のライブラリを使う
あるいは、以下のようなjsonファイルではなくjsファイルに設定を書きます。
module.exports = {
// json
}
最も一般的な2つ
最初の方法:
let jsonData = require('./JsonFile.json')
let jsonData = require('./JsonFile')
// .jsonを省略した場合も動作する
OR
import jsonData from ('./JsonFile.json')
第二の方法:
1)同期的に
const fs = require('fs')
let jsonData = JSON.parse(fs.readFileSync('JsonFile.json', 'utf-8'))
2)非同期に
const fs = require('fs')
let jsonData = {}
fs.readFile('JsonFile.json', 'utf-8', (err, data) => {
if (err) throw err
jsonData = JSON.parse(data)
})
注:1)JsonFile.jsonが変更された場合、require( './ JsonFile.json')を実行しても新しいデータは取得されません。
2)fs.readFileまたはfs.readFileSyncは常にファイルを再読み込みし、変更を加えます。
拡張子を指定せずにJSONのrequireを使用することもできます。json。インポート内容を変更せずに、ファイル拡張子を。jsに変更できます。
同じディレクトリに./ myJsonFile.jsonがあるとします。
const data = require('./myJsonFile')
将来的に./ myJsonFile.jsonを./ myJsonFile.jsに変更する場合は、インポート時に何も変更しないでください。