我有node.js应用程序,其中我有一个class.js
模块,其中
var MyClass = module.exports.MyClass = function MyClass(){}
Object.defineProperty(MyClass, 'MyArray', ['value1','value2']);
MyClass.prototype.MyFunction = function(){
//---
}
然后我require
在我的主app.js
var MyClass = require('./class.js');
var myInstance = new MyClass(); // TypeError: object is not a function
但是当我尝试使用new
实例化它时会抛出该错误。我在这做错了什么?我已经尝试了很多改动,但没有任何改变,但我知道它(或接近它的东西)曾经工作..
答案 0 :(得分:2)
var MyClass = require('./class.js').MyClass;
您必须将MyClass
成员分配给MyClass
exports
成员。否则,您正在使用new
返回的模块实例调用require
。
否则您可以像这样导出:
var MyClass = module.exports = exports = function MyClass(){}
并按原样保留require
语句。在这种情况下,您将从模块中导出一个和仅一个函数。 (从技术上讲,您不需要在上面的行中指定exports
。但是,如果您不在exports
module.exports
ceases to be an alias。我更愿意保留他们同步。)