2016-05-23 12 views
8

私は別のモジュールでそれをインポートしNode.jsの6.2.0にCommonJSモジュールからNode.js ES6モジュールからクラスをエクスポートする方法は?

class MyClass{ 
    //class contents here 
} 

exports = MyClass; 

をES6クラスをエクスポートしようとしています:

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

私は次のように取得していますが例外:

TypeError: MyClass is not a constructor 

どうすれば適切に行うことができますか?

私はBabel/Tranceurを使用していないことに注意してください。最新のノード6.2.0に実装されている純粋なJSです.Kangaxによると、ES6は93%で実装されています。

//編集:これはエクスポートとmodule.exportsの問題ではありません。エクスポートだけを使用している間、私は__proto__と設定されたオブジェクトを取得しています。

+1

モジュールを要求した後に取得する情報を記録してください。 _コンストラクタではない場合、それは何ですか? – sdgluck

+1

* "これはエクスポートとモジュールとの間で問題はありません。" 'exports = MyClass;'は何もエクスポートしません。それは無駄だ。 'module.exports = ...;'はモジュールから単一の値をエクスポートする方法です。なぜなら、 'exports = ...;'がうまくいかない理由を説明しているからです。 –

+0

あなたは@Bergiに正しい答えを付けてください(答えの左側にある灰色の 'ceck'ボタンをクリックしてください) –

答えて

22

ローカル変数exportsではなく、module.exportsに割り当てる必要があります。

+2

@ kubal5003:その記事から: "*' require'は 'moduleの値を参照するオブジェクトを返します.exports'を指定されたファイルに適用します* "。私の答えはどうやって間違っている?あなたは 'module.exports = MyClass'を使ってみましたか? – Bergi

+2

@ kubal5003:この回答は正しいです。あなたがそれを信じなければ、Node/CommonJSモジュールの学習にもっと時間を費やす必要があります。 –

+0

これは私のために働いた。これは解決策として受け入れられるべきです。 –

関連する問題