从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!
答案 0 :(得分:1)
您可以通过将以下内容添加到构建文件(从Scala.js 0.6.5开始)来配置Scala.js来创建CommonJS样式模块:
scalaJSOutputWrapper := ("var __ScalaJSEnv = { exportsNamespace: exports };", "")
有关this SO post的更多详情。