NodeJS fs.statSync(…).isDirectory()对文件返回true

尝试使用以下答案中的代码: https : //stackoverflow.com/a/24594123/3951987

为我目录中的文件返回true。

为了提供更多的上下文,下面是一些基本的代码来描述我的实现:

getDirs = (a_path) => { return fs.readdirSync(a_path) .filter(file => fs.statSync(path.join(a_path, file)).isDirectory()); } someCode = () => { let some_path = path.resolve(process.cwd(), "example"); console.log(getDirs(some_path)); } 

在我的项目中,我有:

 example/ - test/ - manifest.json index.js 

不知何故,上述getDirs函数仍将manifest.json作为目录返回,即使应用了给定的filter。

其他人有这个? 有任何想法吗?

附加信息

我已经将getDirs函数修改为以下内容:

 getDirs = (a_path) => { console.log("getDirs a_path = "+a_path); let dirs = fs.readdirSync(a_path); for(let x = 0; x<dirs.length; x++){ let a_dir = path.resolve(a_path, dirs[x]); console.log(dirs[x]); console.log(fs.statSync(a_path, a_dir).isDirectory()); } return dirs; }; 

这个输出是:

 getDirs a_path = <pathtoproject>/example test true manifest.json true 

更改:

 console.log(fs.statSync(a_path, a_dir).isDirectory()); 

至:

 console.log(fs.statSync(a_dir).isDirectory()); 

否则你说明a_path ,而不是a_dir

fs.statSync有一个参数 – 请参阅文档: