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.js
和 JSImport
我将 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
错误 定义的预期开始 是格式错误的结果 - @JSImport
和 class MyType
之间不能有空行。
这很可能是因为 Scala 在没有分号的情况下结束语句/声明的方式。我不知道确切的规则,但空行通常会有所不同。
我有一个 JS 脚本 script.js
,其中包含 class MyType
。我想在 Scala 脚本 App.scala
.
add()
和 divide
使用 Scala.js
和 JSImport
我将 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
错误 定义的预期开始 是格式错误的结果 - @JSImport
和 class MyType
之间不能有空行。
这很可能是因为 Scala 在没有分号的情况下结束语句/声明的方式。我不知道确切的规则,但空行通常会有所不同。