2017-04-18 8 views
0

いくつかのScalaJSメソッドをCommonJSモジュールとしてエクスポートする必要がありますか?私は、次のを持っているが、それは動作していないよう:Atalaエディタでプラグインとして「インポート」されるCommonJSモジュールをScalaJSに書き込むことができません

@ScalaJSDefined 
@JSExportTopLevel("default") 
object SourceFetch extends js.Object { 
    def activate(state: js.Dynamic): Unit = { 
    global.console.log("activate") 
    } 
    def deactivate(): Unit = { 
    global.console.log("deactivate") 
    } 
} 

そして、はい、scalaJSModuleKind:= ModuleKind.CommonJSModuleはbuild.sbtです。

私が出力として望むのは、このようなcommonjsモジュールです。私は非推奨SBTキー「scalaJSOutputWrapper」を使用して追加するようにされてやってしまった何を

export default { 
    activate(state) { 
    console.log("activate"); 
    }. 
    deactivate() { 
    console.log("deactivate"); 
    } 
}; 

「module.exportsは=輸出[ 『デフォルト』];」出力JSファイルの終わり。

「scalaJSUseMainModuleInitializer」を試しましたが、「module.exports」が「export」でなく「module.exports」の値が未定義です。

答えて

1

上記のスニペットは、実際に書いたECMAScript 2015コードに対応しています。しかし、これはメソッドをモジュールの直接メンバとしてエクスポートするのではなく、defaultオブジェクトのメンバとしてエクスポートします。そして、いいえ、defaultのエクスポートは、モジュール自体と同じではありません(多くの人がそうだと思いますが)。

は、モジュールの直接のメンバーとしての機能をエクスポートするには、あなたが書く必要があります:

object SourceFetch { 
    @JSExportTopLevel("activate") 
    def activate(state: js.Dynamic): Unit = { 
    global.console.log("activate") 
    } 
    @JSExportTopLevel("deactivate") 
    def deactivate(): Unit = { 
    global.console.log("deactivate") 
    } 
} 
+0

素敵を、魔法のように動作します!しかし、これはおそらくどこかで文書化する必要があります。 –

関連する問題