【发布时间】:2013-11-10 11:48:42
【问题描述】:
我已经环顾了几天了,真的我觉得我在这里错过了这个概念的一部分......我对 node.js 还很陌生,我正在尝试调用每次说来自我的主类中不同模块的方法...
这是代码..
inputReader.js
(function() {
var dir = './views/'; // Declare the directory to be scanned
var data = {} // Create array object for storage
fs.readdir(dir, function(err, files) {
if (err) {
throw err;
}
var c = 0; // Declare a var c = 0; initial condition of a for loop
files.forEach(function(file) {
c++; // Increment a counter in the for-loop condition
fs.readFile(dir+file, 'utf-8', function(err, string) {
if (err) {
throw err;
}
if ( 0 === -3) {
data[file] = string; // Throws into data object string of contents within the file being read
console.log(data); // We only need this to test using console (the contents being stored)
}
});
});
});
module.exports.getData = function() {
return data();
}
}());
这就是我尝试在 app.js 中调用它的方式
var inputReader = require('./inputReader').inputReader;
app.get('/', function(req, res){
res.send(inputReader.getData());
});
app.listen(3000);
console.log('Listening on port 3000');
我的预测是,如果我这样做正确,我的 localhost 页面将显示我指定应用程序读取的文件夹中的文件内容; ./views/.. 但很明显,我做错了什么,因为我得到的错误是:
TypeError:无法在回调中调用 c:\Users\Brian\documents\visualizer\app.js:21:24 处未定义的方法 'getData' (c:\Users\Brian\documents\visualizer\node_modules\express\ lib\router\index.js:164:37) 在参数 (c:\Users\Brian\documents\visualizer\node_modules\express\lib\router\index.js:138:11) 在传递 (c:\Users\ Brian\documents\visualizer\node_modules\express\lib\router\index.js:145:5) 在 Router._dispatch (c:\Users\Brian\documents\visualizer\node_modules\express\lib\router\index.js: 173:5) 在 Object.router (c:\Users\Brian\documents\visualizer\node_modules\express\lib\router\index.js:33:10) 在下一个 (c:\Users\Brian\documents\visualizer\ node_modules\express\node_modules\connect\lib\proto.js:193:15) 在 Object.expressInit [作为句柄] (c:\Users\Brian\documents\visualizer\node_modules\express\lib\middleware.js:30: 5) 在下一个 (c:\Users\Brian\documents\visualizer\node_modules\express\node_modules\connect\lib\proto.js:193:15) 在 Object.query [作为句柄] (c:\Users\Brian\文档\可视化器\n ode_modules\express\node_modules\connect\lib\middleware\query.js:44:5)
如果有人能指出我正确的方向或向我解释我做错了什么,那将不胜感激
谢谢! (抱歉读了这么久……)
【问题讨论】:
-
试试 var inputReader = require('./inputReader') (没有额外的 .inputReader)。
-
它不会解释你的错误,但我不明白
return data();行。data是一个对象,而不是一个函数。