Scala.js import JS script gives error: expected start of definition

Scala.js import JS script gives error: expected start of definition

我有一个 JS 脚本 script.js,其中包含 class MyType。我想在 Scala 脚本 App.scala.

中使用 class' 方法 add()divide

使用 Scala.jsJSImport 我将 script.js 导入 App.scala

然而,当我尝试在 Scala 脚本中使用 MyType 方法 add()divide 时,我收到错误 error: expected start of definition?

你能帮我找出问题所在吗?

提前致谢!

script.js:


class MyType {
    constructor(x, y) {

        this.x = x;
        this.y = y;

    }

    add(z){
        let {x,y} = this;
        return x + y + z;
    }

    divide(z){
        let {x,y} = this;
        return (x + y)/z;
    }
};

module.exports = {MyType};

App.scala:


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

@js.native
@JSImport("./script.js","MyType")

class MyType(var x:Double, var y:Double) extends js.Object

object MyApp {
    @JSExport
    def main(args:Array[String]): Unit = {
        val added = new MyType(1,2).add(3)
        println(s"my $added") // 1

        val divided = new MyType(4,3).divide(2)
        println(s"my $divided") // 6
    }
}

build.scala:

name:="JSImports"
version:="0.1"
scalaVersion:="2.11.12"
enablePlugins(ScalaJSPlugin)
jsDependencies += ProvidedJS/"script.js"
scalaJSUseMainModuleInitializer:=true

错误 定义的预期开始 是格式错误的结果 - @JSImportclass MyType 之间不能有空行。

这很可能是因为 Scala 在没有分号的情况下结束语句/声明的方式。我不知道确切的规则,但空行通常会有所不同。