Javascript 计算node.js中具有特定扩展名的目录中的文件数

Javascript 计算node.js中具有特定扩展名的目录中的文件数,javascript,node.js,es6-promise,readdir,Javascript,Node.js,Es6 Promise,Readdir,在给定的任务中,我需要使用promise计算扩展名为“.js”、““.txt”的文件以及其他剩余的扩展名 const fs = require("fs"); const path = require("path"); function fun(pathTodirectory) { return new Promise(resolve => { fs.readdir(pathTodirectory, (error, files) =>

在给定的任务中,我需要使用promise计算扩展名为“.js”、““.txt”的文件以及其他剩余的扩展名

const fs = require("fs");
const path = require("path");

function fun(pathTodirectory) {
  return new Promise(resolve => {
    fs.readdir(pathTodirectory, (error, files) => {
      if (error) {
        reject("Error occured");
      }
      else {
        var obj = {
          countJs: function () {
            var count = 0;
            for (var i = 0; i < files.length; i++) {
              if (path.extname(files[i]) === ".js") {
                count++;
              }
            }
            return count;
          },
          countTxt: function () {
            var count = 0;
            for (var i = 0; i < files.length; i++) {
              if (path.extname(files[i]) === ".txt") {
                count++;
              }
            }
            return count;
          },
          count: function () {
            var count = 0;
            for (var i = 0; i < files.length; i++) {
              if (path.extname(files[i]) !== ".js" && path.extname(files[i] !== ".txt")) {
                count++;
              }
            }
            return count;
          },
          files: files //will print list of all files in form of array.
        }
        resolve(obj);
      }
    });
  });
}
//then part for promise.
const fs=require(“fs”);
常量路径=要求(“路径”);
function fun(路径目录){
返回新承诺(解决=>{
fs.readdir(路径目录,(错误,文件)=>{
如果(错误){
拒绝(“发生错误”);
}
否则{
var obj={
countJs:function(){
var计数=0;
对于(var i=0;i

这是到目前为止我的代码,我在代码中遇到了问题。
count
部分在控制台中不工作并给出断言错误。我只需要以对象的形式进行解析。如何有效地执行此操作?

您从未在函数中的任何位置定义路径。除非您在其他地方定义它,否则将导致错误。

fs.readdir
回调中的第一个参数是错误而不是文件列表@ponury kostek我在这里更正了它。排除承诺中的
then
部分意味着您永远不会在任何地方使用
obj
,也不会调用
count
方法,因此不清楚断言错误是如何从该部分产生的?还有,确切的错误消息是什么?@Bergi我已经在我的原始代码中包含了它。在这里,由于代码太长,我排除了它。