(Node js) – TypeError:不能调用未定义的方法'getData'

我一直在寻找几天没有,真的觉得我错过了这里的概念的一部分…我是相当新的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'); 

我的预测,如果我做到了这一点,我的本地主页将显示文件的内容,我指定应用程序读取的文件夹; ./views/ ..但很明显,我做的事情非常错误,因为我得到的错误是:

TypeError:无法在callback(c:\ Users \ Brian \ documents \ visualizer \ node_modules \ express \ lib \ router)中调用未定义在c:\ Users \ Brian \ documents \ visualizer \ app.js:21:24处的方法“getData” (c:\ Users \ Brian \ documents \ visualizer \ node_modules \ express \ lib \ router \ index.js:138:11)at pass(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 )在下一个(c:\ Users \ Brian \ documents \ visualizer \ node_modules \ express)Object.router(c:\ Users \ Brian \ documents \ visualizer \ node_modules \ express \ lib \ router \ index.js:33:10) Object.expressInit [as handle](c:\ Users \ Brian \ documents \ visualizer \ node_modules \ express \ lib \ middleware.js:30:5)at:\ node_modules \ connect \ lib \ proto.js:193:15)下一步(c:\ Users \ Brian \ documents \ visualizer \ node_modules \ express \ node_modules \ connect \ lib \ proto.js:193:15)在Object.query [as handle](c:\ Users \ Brian \ documents \ visualizer \节点 _modules \expression\ node_modules \连接\ lib中\中间件\ query.js:44:5)

如果有人可能指向我正确的方向或向我解释我做错了什么,那将不胜感激

谢谢! (对不起,长时间阅读..)

写出来有几种不同的方式:

 // inputReader.js module.exports.getData = function() { return data(); } // app.js var inputReader = require('./inputReader'); // inputReader contains getData inputReader.getData(); 

要么

 // inputReader.js module.exports.getData = function() { return data(); } // app.js var inputReader = require('./inputReader').getData; // inputReader is now getData inputReader(); 

要么

 // inputReader.js var theModule = { getData : function() { return data(); } } module.exports = theModule; // app.js var inputReader = require('./inputReader'); inputReader.getData(); 

要么

 // inputReader.js var theModule = function() { /* constructor */ }; theModule.prototype.getData = function() { return data(); }; module.exports = theModule; // app.js var inputReader = require('./inputReader'); new inputReader().getData();