es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Ajax.post –> dom.fetch Ajax.post –> dom.fetch

Estoy tratando de utilizar la API dom.fetch (o dom.Fetch.fetch) en lugar de Ajax.post y tengo algunos problemas:

¿Es esta una traducción correcta de ajax a fetch?

Ajax.post(
  url = "http://localhost:8080/ajax/myMethod",
  data = byteBuffer2typedArray(Pickle.intoBytes(req.payload)),
  responseType = "arraybuffer",
  headers = Map("Content-Type" -> "application/octet-stream"),
)
dom.fetch(
  "http://localhost:8080/fetch/myMethod",
  new RequestInit {
    method = HttpMethod.POST
    body = byteBuffer2typedArray(Pickle.intoBytes(req.payload))
    headers = new Headers {
      js.Array(
        js.Array("Content-Type", "application/octet-stream")
      )
    }
  }
)

Sin embargo, en el lado de js se produce un “ReferenceError: fetch is not defined”, lo mismo ocurre si se reemplaza por dom.Fetch.fetch.

Mi configuración:

jsdom 19.0.0 con

npm init private
npm install jsdom

project/plugins.sbt

libraryDependencies += "org.scala-js" %% "scalajs-env-jsdom-nodejs" % "1.1.0"
addSbtPlugin("org.scala-js" % "sbt-scalajs" % "1.8.0")

build.sbt (en el proyecto js)

libraryDependencies += "org.scala-js" %%% "scalajs-dom" % "2.0.0"
jsEnv := new JSDOMNodeJSEnv(JSDOMNodeJSEnv.Config()
  .withArgs(List("--dns-result-order=ipv4first")))

Pensé que la solución de jsEnv no era necesaria en Scala.js 1.8 (ver https://github.com/scala-js/scala-js-js-envs/issues/12#issuecomment-958925883). Pero aún necesito hacerlo cuando ejecuto la versión ajax. Con la solución, mi versión ajax funciona bien, por lo que parece que mi instalación de node está bien.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    La traducción de Ajax.post a dom.fetch parece ser correcta. Sin embargo, se produce un error de “Referencia no definida: fetch” en el lado de JavaScript, lo que indica que la API fetch no está disponible.

    El autor menciona que está utilizando la versión 19.0.0 de jsdom y ha instalado la versión 2.0.0 de scalajs-dom. También ha intentado usar dom.Fetch.fetch, pero el error persiste.

    No está claro por qué la API fetch no está disponible. El autor sugiere que la instalación de su nodo está bien, ya que la versión de Ajax.post funciona con una solución alternativa de jsEnv.

    Sin más información, es difícil determinar la causa del error. Una posible solución podría ser intentar usar un entorno de JavaScript diferente o verificar si la API fetch está realmente disponible en el entorno actual.

Comments are closed.