从Node.js调用Scala.js的正确方法是什么?

时间:2015-08-12 17:37:21

标签: javascript node.js scala scala.js

从Node.js调用Scala.js的正确方法是什么?下面的代码确实有效,但我不喜欢run.js中require行中的 .__ ScalaJSExportsNamespace 。同样重要的是我得到文本" someTest()调用!"实际印在我的终端上。

run.js

var fastopt = require('./scalajs-hello-world-fastopt').__ScalaJSExportsNamespace;
var run = fastopt.RunMe();

run.main();
console.log(run.helloWorld());
console.log(run.someTest());

RunMe.scala

import scala.scalajs.js.annotation._
import scala.scalajs.js.JSApp

@JSExportAll
object RunMe extends JSApp {

  def main(): Unit = {
    println("Hello from main()!")
  }

  def helloWorld() = "Hello from helloWorld()!"

  def someTest() = {
    println("someTest() called!")
    s"In Scala.js, (1.0).toString is ${(1.0).toString}!"
  }

}

输出

$ node run  
Hello from main()!
Hello from helloWorld()!
someTest() called!
In Scala.js, (1.0).toString is 1!

1 个答案:

答案 0 :(得分:1)

您可以通过将以下内容添加到构建文件(从Scala.js 0.6.5开始)来配置Scala.js来创建CommonJS样式模块:

scalaJSOutputWrapper := ("var __ScalaJSEnv = { exportsNamespace: exports };", "")

有关this SO post的更多详情。