想知道如何调试 Node.js学习节点“filter ls”练习

Wondering how to debug Node.js learnyounode "filter ls" exercise

本文关键字:节点 学习 filter ls 练习 js Node 何调试 调试 想知道      更新时间:2023-09-26

我正在完成学习节点练习。特别是"过滤器ls"。如果您不熟悉此练习,请参阅此说明。

这是官方解决方案:

var fs = require('fs');
var path = require('path');
fs.readdir(process.argv[2], function (err, list) {
  list.forEach(function (filename) {
    if (path.extname(filename) === '.' + process.argv[3]) {
      console.log(filename);
    }
  });
});

这是我的解决方案:

var fs = require('fs');
var path = require('path');
var directory = process.argv[2];
var fileExtension = "." + process.argv[3];
function sortFiles (callback){
    fs.readdir(directory, function(err,files){
        if(err) return callback(err);
        callback(null,files);
    });
};
sortFiles(function(err,files){
    var fileExt = "";
    for(var i = 0; i < files; i++){
        debugger;
        fileExt = path.extname(files[i]);
        if(fileExt === fileExtension){
            console.log(files[i]);
        };
    };
});

问题:

我的代码不输出任何内容。据我所知,我的代码和官方解决方案之间最大的区别如下:

      list.forEach(function (filename) {
        if (path.extname(filename) === '.' + process.argv[3]) {
        console.log(filename);
      }

与:

    for(var i = 0; i < files; i++){
        fileExt = path.extname(files[i]);
        if(fileExt === fileExtension){
            console.log(files[i]);
        };
    };

2 问题:

1) 如何调试此代码?我试过node debug node.js.从中我可以看到,当我的目录是包含 cs 文件和 js 文件的文件夹时,files 是一个数组,但每个索引都包含 "。

2)为什么我的简单for循环方法不起作用?他们为什么选择.foreach?除了更简洁之外,还有什么原因吗?

1) https://github.com/node-inspector/node-inspector

2)忘记检查length

for(var i = 0; i < files.length; i++){
                         --^--

forEach读起来更好,而且更惯用。