这是我正在使用的代码片段......
/*
Module: inputReader.js, directoryScanner.js (included)
Description: Basic file reader returns string of contents of a file from a set file name
Needs to be done: Add key listener to allow for a dynamic file name
*/
// Declare node.js module dependencies from API
var fs = require('fs'),
wrench = require('wrench'),
util = require('util')
// Define module to be exported as a function(s)
module.exports = {
dirRead: function() {
var rootfolder = './node_modules';
var filteredfiles = [];
var files = [];
var fileextension = '.html';
files = wrench.readdirSyncRecursive(rootfolder)
for (var i = 0; i<files.length; i++) {
if (files[i].indexOf(fileextension) != -1) {
filteredfiles.push(files[i]);
}
}
return filteredfiles;
},
fileRead: function() {
// Call synchronous fileSystem function readFileSync on file name
for(i = 0; i<filteredfiles.length; i++) {
var temp = fs.readFileSync(filteredfiles[i].toString(), 'utf8')
return temp
}
}
};
我正在导出一个包含2个不同功能的模块;第一个(readDir)读取目录及其子目录以获取文件列表,第二个(readFile)依赖于第一个(从第一个函数中读取文件列表并实际遍历每个文件)。
问题是当我尝试在第二个函数readFile中调用filterfiles时,我得到一个错误,说过filterfiles是未定义的。
我不知道如何解决这个问题,有人可以帮助我吗? (我的猜测是范围问题)......
res.send(reader.dirRead()) and then, res.send(reader.fileRead(reader.dirRead()))
答案 0 :(得分:0)
filteredfiles在dirRead函数中本地声明(因此对于fileRead函数不可见)。您必须在更高的范围内声明它,或将其作为fileRead参数传递。