Я хотел бы включить пару файлов JSON в мой код JavaScript, которые находятся в том же каталоге, что и мой исходный файл JavaScript.
Если бы я хотел включить другой файл JavaScript, я мог бы просто использовать require
. Теперь я использую readFileSync
и __dirname
получаю JSON, что, на мой взгляд, является уродливым способом сделать это.
Есть ли что-то подобное для require, которое позволяет мне загружать JSON-файл?
Ответы:
Начиная с узла v0.5.x да, вы можете требовать свой JSON так же, как и файл js.
var someObject = require('./somefile.json')
В ES6:
import someObject from ('./somefile.json')
источник
.json
похоже, имеет значениеФайлы JSON не требуют явного оператора экспорта. Вам не нужно экспортировать, чтобы использовать его в качестве файлов Javascript.
Таким образом, вы можете использовать только
require
для действительного документа JSON.data.json
main.js
источник
Нет. Используйте
readFile
илиreadFileSync
(последний только во время запуска).Или используйте существующую библиотеку, например
В качестве альтернативы запишите ваш конфиг в файл js, а не в файл json
источник
__dirname
относительные пути.Два самых распространенных
Первый способ:
let jsonData = require('./JsonFile')
// если мы опускаем .json также работаетИЛИ
Второй способ:
1) синхронно
2) асинхронно
Примечание: 1) если мы изменили JsonFile.json, мы не получим новые данные, даже если мы запустим require ('./ JsonFile.json')
2) fs.readFile или fs.readFileSync всегда будут перечитывать файл и получать изменения
источник
Вы даже можете использовать require вашего JSON без указания расширения .json . Это позволит вам изменить расширение файла на .js без каких-либо изменений в импорте.
при условии, что у нас есть ./myJsonFile.json в том же каталоге.
Если в будущем вы измените ./myJsonFile.json на ./myJsonFile.js, при импорте ничего не должно быть изменено.
источник
Вы можете импортировать файлы json, используя флаг экспериментальных модулей json для node.js v14. Подробнее здесь
file.js
И вы называете это с
node --experimental-json-modules file.js
источник