2016-05-23 50 views
8

我試圖從CommonJS的模塊中的Node.js導出ES6類6.2.0Node.js ES6如何從模塊中導出類?

class MyClass{ 
    //class contents here 
} 

exports = MyClass; 

然後將它導入另一個模塊:

var MyClass = require('/path/to/module.js') 
var instance = new MyClass(); 

但是我得到以下例外:

TypeError: MyClass is not a constructor 

我該如何正確地做到這一點?

請注意,我沒有使用Babel/Tranceur,它是最新的節點6.2.0中實現的純JS,根據Kangax的說法,它實現了93%的ES6。

//編輯:這不是出口vs module.exports的問題。單獨使用導出時,我得到一些與__proto__集合的對象。

+1

嘗試記錄需要模塊後得到的內容。 _If它不是構造函數,它是什麼?_ – sdgluck

+1

*「這不是出口vs module.exports的問題」*是的! 'exports = MyClass;'不會導出任何內容。這是一個noop。 'module.exports = ...;'是從模塊中導出單個值的方法。重複解釋了爲什麼'exports = ...;'不起作用。 –

+0

您應該將@Bergi答案標記爲正確(通過點擊他答案左側的灰色'ceck'按鈕) –

回答

22

您將需要分配給module.exports,而不是當地的exports變量。

+2

@ kubal5003:從那篇文章中:「*'require'返回一個對象,它引用了'module .exports'給定文件*「。我的回答錯誤?你嘗試過使用'module.exports = MyClass'嗎? – Bergi

+2

@ kubal5003:這個答案是正確的。如果你不相信那麼你需要花更多的時間來學習Node/CommonJS模塊。 –

+0

這對我有用。這應該被接受爲解決方案。 –