Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

171
Vistas
Scala Scala.js al importar el módulo de JavaScript da el error 'el valor del método no es miembro de'

Estoy tratando de importar un módulo de clase JavaScript script.js en un programa scala main.scala y uso sus métodos add y divide .

Estoy usando scala.js para importar el script JS y SBT para compilar.

Sin embargo, cuando intento ejecutar el programa, obtengo los errores:

value add is not a member of example.MyType

value divide is not a member of example.MyType

¿Podría ayudarme a encontrar dónde está el problema?

¡Gracias por adelantado!

¡El código se ve así!

principal.scala

 package example 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 { add(z: Int) divide(z: Int) } object Hello extends App { work() // Sum: 1, Divide: 6 @JSExport def work(): Unit = { val added = new MyType(1,2).add(3) println(s"Sum: $added,") // 1 val divided = new MyType(4,3).divide(2) println(s"Divide: $divided") // 6 } }

secuencia de comandos.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};

plugins.sbt:

 addSbtPlugin("org.scala-js" % "sbt-scalajs" % "1.10.0") addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "1.0.0")

construir.sbt:

 import Dependencies._ ThisBuild / scalaVersion := "2.13.8" ThisBuild / version := "0.1.0-SNAPSHOT" ThisBuild / organization := "com.example" ThisBuild / organizationName := "example" lazy val root = (project in file(".")) .settings( name := "add", libraryDependencies += scalaTest % Test ) enablePlugins(ScalaJSPlugin) scalaJSUseMainModuleInitializer := true // See https://www.scala-sbt.org/1.x/docs/Using-Sonatype.html for instructions on how to publish to Sonatype.
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Parece que tienes un poco confusa la sintaxis de Scala para definir métodos. add y divide debe declararse como

 @js.native @JSImport("script.js","MyType") class MyType(var x:Double, var y:Double) extends js.Object { def add(z: Int): Double = js.native def divide(z: Int): Double = js.native }
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda