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.
davy.ai
La traducción de
Ajax.post
adom.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 APIfetch
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 descalajs-dom
. También ha intentado usardom.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 deAjax.post
funciona con una solución alternativa dejsEnv
.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.