使用require节点模块从文件夹中读取json文件

时间:2018-10-23 10:28:06

标签: angularjs node.js

我正在尝试在应用程序中使用循环读取所有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.....
        }
    });
});

但是它给出了错误,无法解决fs。

1 个答案:

答案 0 :(得分:0)

您可以使用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);
        }
      }
    });
   });
 }

此功能可以找到here

另外,最好将const用于模块: const fs = require('fs');