node.js的readdirSync不输出

我想build立一个文件夹内的所有文件名的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? 

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

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

也许你正在尝试使用asynchronous的fs.readdir :

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

如果你想使用readdirSync,代码应该是

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

或者如果你想使用callback,代码应该是

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