在我的Node.js应用程序中,我使用require
将变量传递给函数,如下所示:
console.log(require('../controllers/controller')(variable)); // undefined
但是,当我没有传入变量时,它会记录为一个函数,如下所示:
console.log(require('../controllers/controller')); // [Function]
我的控制器定义如下:
var Controller = function (variable) {
this.variable = variable;
};
Controller.prototype.method = function (someInput, callback) {
// can access this.variable;
};
module.exports = Controller;
我也遇到了这个错误:
TypeError: Object function (variable) {
this.variable = variable;
} has no method 'method'
知道我在哪里出错吗?我坚持这一步,不知道如何进一步调试。
答案 0 :(得分:3)
require('../controllers/controller')
是一个功能。如果在没有new
关键字的情况下使用它,则不会返回任何内容。但是当你使用new function()
时,它就像对象的构造函数。所以你想要做的是使用new
关键字,如果你需要用它的原型方法返回一个对象。
var Controller = require('../controllers/controller'),
controller = new Controller(variable);
答案 1 :(得分:1)
这是一个老话题,但我遇到了这个问题,接受的答案对我没有帮助。
要创建带参数的模块,我使用以下代码:
module.exports = function(pName) {
return {
test1: function() {
console.log('In test 1 '+pName);
},
test2: function() {
console.log('In test 2 '+pName);
}
};
};
调用模块的功能:
var testModule = require('testModule')('David');
testModule.test1();
testModule.test2();