Node.js (Node js)-TypeError:无法调用方法';getData';未定义的
我已经找了几天了,真的我觉得我错过了这个概念的一部分。。。我是node.js的新手,我正在尝试从我的主类中的不同模块调用一个方法 这是密码 inputReader.jsNode.js (Node js)-TypeError:无法调用方法';getData';未定义的,node.js,express,typeerror,Node.js,Express,Typeerror,我已经找了几天了,真的我觉得我错过了这个概念的一部分。。。我是node.js的新手,我正在尝试从我的主类中的不同模块调用一个方法 这是密码 inputReader.js (function() { var dir = './views/'; // Declare the directory to be scanned var data = {} // Create array object for storage fs.readdir(dir, fun
(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页面将显示我指定应用程序读取的文件夹中的文件内容/视图/。。但很明显,我做了一些非常错误的事情,因为我得到的错误是:
TypeError:无法在pass(c:\Users\Brian\documents\visualizer\app.js:21:24)调用参数(c:\Users\Brian\documents\visualizer\node\u modules\express\lib\router\index.js:164:37)处未定义的方法“getData”(c:\Users\Brian\documents\visualizer\node\u modules\express\lib\router\index.js:138:11)(c:\Users\Brian\documents\visualizer\node\u modules\express\lib\router\index.js:145:5)在路由器上。下一步在Object.router(c:\Users\Brian\documents\visualizer\node\u modules\express\lib\router\index.js:33:10)上调度(c:\Users\Brian\documents\visualizer\router\index.js:173:5)(c:\Users\Brian\documents\visualizer\node\u modules\express\node\u modules\connect\lib\proto.js:193:15)在Object.expressInit[作为句柄](c:\Users\Brian\documents\visualizer\node\u modules\express\node\proto.js:193:15)在Object.query(c:\Users\Brian\documents\documents\documents\visualizer\visualizer\node\proto.js:30:5)[作为句柄](c:\Users\Brian\documents\visualizer\node\u modules\express\node\u modules\connect\lib\middleware\query.js:44:5)
如果有人能给我指出正确的方向或向我解释我做错了什么,我将不胜感激
谢谢!(很抱歉读了这么久。)有几种不同的书写方式:
// inputReader.js
module.exports.getData = function() {
return data();
}
// app.js
var inputReader = require('./inputReader'); // inputReader contains getData
inputReader.getData();
或
或
或
请尝试var inputReader=require('./inputReader')(不带附加的.inputReader)。这不能解释您的错误,但我不理解
返回数据();
行。数据
是一个对象,而不是函数。
// 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();