2014-02-06 215 views
0

我的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實例化時引發該錯誤。我在這裏做錯了什麼?我已經嘗試了很多的變化,但沒有工作,但我不知道它(或接近它)用於工作..

回答

2
var MyClass = require('./class.js').MyClass; 

你必須分配給MyClass其中設置在MyClass成員exports對象。否則,您將調用new以及由require返回的模塊實例。

否則,你可以導出這樣的:

var MyClass = module.exports = exports = function MyClass(){} 

,並保持你的require語句是。在這種情況下,您只能從模塊中導出一個和只有一個函數。 (從技術上講,你不需要在上面的行中指定exports,但是,如果你沒有,那麼exportsceases to be an aliasmodule.exports,我更喜歡保持它們同步。)

相關問題