0
Каким образом позвонить в Scala.js из Node.js? Код ниже работает, но мне не нравится .__ ScalaJSExportsNamespace в строке require в run.js. Также важно, чтобы я получил текст «someTest()»! фактически напечатан на моем терминале.Каков правильный способ вызвать Scala.js из Node.js?
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!
Лучший способ вызвать Scala.js из узла - установить пространство имён экспорта Scala.js в 'export'. Это фактически сделает его надлежащим модулем узла. Какую версию Scala.js вы используете? (Похоже, что он старше, IIRC '__ScalaJSExportsNamespace' больше не существует в более поздних версиях). – gzm0
@ gzm0: Я использую Scala.js 0.6.4 и Scala 2.11.7. Должны быть самые новые версии. Я нашел ответ (1) от вас. Это все еще путь? Используете ли вы Grunt для добавления пространства имен экспорта? (1) http://stackoverflow.com/questions/26637600/how-to-convert-scala-js-application-to-commonjs-module – user1091344
Да, это все еще путь. Вы можете использовать любой инструмент, который вам нравится. Я лично использовал sbt, только потому, что я больше всего знаком с ним. – gzm0