node.js的readdirSync什么都不输出

时间:2017-03-27 01:53:34

标签: javascript node.js

我想构建一个包含文件夹中所有文件名的json文件,下面的代码有什么问题?

const iconsFolder = './resources/assets/icons';
const fs = require('fs');
const jsonfile = require('jsonfile');

let json = [];
fs.readdirSync(iconsFolder, [], (err, files) => {
  files.forEach(file => {
    json.push({'name': file.split('.')[0]})
  });
})

console.log(json); // empty array?

2 个答案:

答案 0 :(得分:2)

readdirSync返回文件。您正试图通过永远不会被调用的回调来访问它。您将获得它作为返回值:

var files = fs.readdirSync(iconsFolder, []);

files.forEach(file => {
    json.push({'name': file.split('.')[0]})
});

也许您正在尝试使用异步的fs.readdir

fs.readdir(iconsFolder, [], (err, files) => {
  files.forEach(file => {
    json.push({'name': file.split('.')[0]})
  });
  console.log(json);
})

答案 1 :(得分:0)

如果要使用readdirSync,代码应为

let json = [];
let files = fs.readdirSync(iconsFolder);
files.forEach(file => {
  json.push({'name': file.split('.')[0]})
});

或者如果您想使用回调,代码应为

let json = [];
fs.readdir(iconsFolder, (err, files) => {
  files.forEach(file => {
    json.push({'name': file.split('.')[0]})
  });
});