Чтение файлов json из папки с использованием модуля узла require - PullRequest
0 голосов
/ 23 октября 2018

Я пытаюсь прочитать все файлы JSON, используя цикл, в моем приложении.Вот код для чтения одного файла, который прекрасно работает.

 const translations = require("../data/hello" + fileEndWith);

Но в переводах каталогов 10+ файлов, поэтому я не хочу писать один и тот же код для каждого файла вместоЯ хочу читать циклы.

let fs = require('fs');

let fileEndWith = "en.json";


fs.readdir("../data/", (err, fileNames) => {
    fileNames.forEach((fileName) => {
        if(fileName.indexOf(fileEndWith) != -1){
            // some code.....
        }
    });
});

, но выдает ошибку. Не удается разрешить фс.

1 Ответ

0 голосов
/ 23 октября 2018

Вы можете использовать процедуры из библиотеки cutie-fs :

fs.readdir("../data/", (err, fileNames) => {
  let jsonFileNames = fileNames.filter(fileName => fileName.indexOf(fileEndWith) != -1);
  readDataFromFiles(jsonFileNames, {encoding: 'utf8'}, (error, dataObj) => {
    console.log(dataObj); // {fileName1: data1, fileName2: data2, ... } 
  });
});

Где readDataFromFiles - следующая функция

const readDataFromFiles = (files, options, callback) => {
  let contents = {};
  let count = 0;
  if (files.length === 0) {
   callback(null, contents);
  }
  files.forEach(file => {
    fs.readFile(file, options, (error, data) => {
      if (error) {
        callback(error);
      } else {
        contents[file] = data;
        count += 1;
        if (count === files.length) {
          callback(null, contents);
        }
      }
    });
   });
 }

Эту функцию вы можете найти здесь

Также лучше использовать const для модулей: const fs = require('fs');

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...