卡住,完整性,重复列出目录中的所有文件与 nodejs?

stuck,completeness,repeatedly to list all files in directory with nodejs?

我想用nodejs列出指定目录下的所有文件。

var fs = require('fs');
var path = require('path');

var walk = function(directoryName) {
  fs.readdir(directoryName, function(e, files) {
    files.forEach(function(file) {
      fs.stat(directoryName + path.sep + file, function(e, f) {
        if (f.isDirectory()) {
          walk(directoryName + path.sep + file)
        } else {
          console.log('-' + file)
        }
      })
    })
  })
}

walk("/home")

结果三道乱题。

1.stuck
在几分钟内在节点控制台中执行上述 nodejs,光标停在那里,没有节点提示字符 > 显示,只是一个静态光标。
静态游标是否意味着 nodejs 程序卡住了?

2.completeness
在光标停在那里之前列出的所有文件 none 是对还是错?

3.repeatedly
附件中列出了很多相同的文件名,如BasicLatin.jsCombDiacritMarks.js,重复列出相同的文件?

将语句 console.log('-' + file) 修改为 console.log(directoryName + path.sep + file) 并使用命令 node list.js 另存为 list.js 和 运行,问题 2 和问题 3 已解决。
列出所有文件,没有重复相同的文件。

在终端中输入node,逐行输入运行程序。
为什么在节点控制台运行列出所有文件后没有节点提示字符>
好像程序卡在这里了?

Note: this isn't a complete answer yet. Need further information but comments are too short. I will edit/delete my answer depending on your response.

我 运行 你的代码在我的 Ubuntu 机器上,它以退出代码 0 完成。我必须处理回调中的错误以允许它 运行 完成但是它没有卡住。

'use strict';

var fs = require('fs');
var path = require('path');

var walk = function(directoryName) {
  fs.readdir(directoryName, function(e, files) {
    if (!e) {
      files.forEach(function (file) {
        fs.stat(directoryName + path.sep + file, function (e, f) {
          if (!e) {
            if (f.isDirectory()) {
              walk(directoryName + path.sep + file)
            } else {
              console.log(' - ' + file)
            }
          } else {
            console.log(e);
          }
        })
      })
    } else {
      console.log(e);
    }
  })
}

walk("/home")

所以您的代码似乎没有完全不正确的地方。

关于您的问题

  1. 你是如何执行你的代码的?
  2. 请运行 在比 /home 更小的目录层次结构上进行测试。我假设这是 unix/linux 机器上的 /home。
  3. 同上。让我们以 BasicLatin.js 为例。 运行 显示完整路径的程序并检查它们是否真的重复。