我正在创build一个静态node.js服务器

我正在创build一个静态的node.js服务器,只是在指定的目录中提供纯html,css和javascript。 我试图让服务器读取每个子目录,并将url路由到它指定的文件。 但是它只能读取根目录。

var fs = require('fs'); var array = fs.readdirSync(__dirname); function getAllSub(array){ for (i = 0; i < array.length; i++){ if (array[i].indexOf(".") == (-1)) { array = array.concat(array[i] + "/" + fs.readdirSync(__dirname + "/" + array[i])); } if (array[i].indexOf("/") != (-1)){ var foldcon = array[i].substr(array[i].indexOf("/") + 1); var folder = array[i].substr(0, array[i].indexOf("/")); foldcon = foldcon.split(","); for (n = 0; n < foldcon.length; n++){ foldcon[n] = folder + "/" + foldcon[n] if (foldcon[n].indexOf(".") == (-1)){ console.log([foldcon[n]]); foldcon[n] = getAllSub([foldcon[n]]); } } array.splice(i, 1, foldcon); } } return array; } array = getAllSub(array); console.log(array); 

此时此代码将读取目录,并识别文件数组中的项目是否为文件夹,但不会将子目录中的文件正确添加到数组中。 现在它有点无限recursion,我真的不知道如何阻止它。 这并不意味着我实际上要使用的东西,我只是认为这将是一个很好的项目来介绍自己的Node.js的基础知识

编辑^

我知道这是晚了,但这是一个recursion解决scheme读取子文件夹中的文件path的正确答案:

 var fs = require("fs"); /** * Recurse through a directory and populate an array with all the file paths beneath * @param {string} path The path to start searching * @param {array} allFiles Modified to contain all the file paths */ function readdirSyncRecursive(path, allFiles) { var stats = fs.statSync(path); if (stats.isFile()) { // base case allFiles.push(path); } else if (stats.isDirectory()) { // induction step fs.readdirSync(path).forEach(function(fileName) { readdirSyncRecursive(path + "/" + fileName, allFiles); }); } } var allFiles = []; readdirSyncRecursive("/path/to/search", allFiles); console.info(allFiles); 
 var fs = require('fs'); var array = fs.readdirSync(__dirname); for (i = 0; i < array.length; i++){ if (array[i].indexOf(".") == (-1)) { // you need to use the return value from concat array = array.concat(array[i] + "/" + fs.readdirSync(__dirname + "/" + array[i])); console.log('if executed'); } } console.log(array);