Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

315
Views
No se puede consumir el flujo de ndjson en Node, pero un código similar funciona en React

Estoy tratando de consumir datos de este punto final en lichess.org .

Aquí hay un ejemplo de trabajo mínimo de un componente React que consume ese flujo de datos. Estoy usando una biblioteca llamada can-ndjson-stream .

 import ndjsonStream from "can-ndjson-stream" import { useEffect } from "react" function App() { useEffect(() => { fetch("https://lichess.org/api/tv/feed") .then(res => ndjsonStream(res.body)) .then(stream => { const streamReader = stream.getReader() streamReader.read().then(async res => { while (!res || !res.done) { res = await streamReader.read() console.log(res.value) } }) }) .catch(console.error) }, []) return <>Lorem Ipsum</> } export default App

Sin embargo, si intento escribir este mismo código y ejecutarlo en Node de esta manera:

 import ndjsonStream from "can-ndjson-stream" import fetch from "node-fetch" fetch("https://lichess.org/api/tv/feed") .then(res => ndjsonStream(res.body)) .then(stream => { const streamReader = stream.getReader() streamReader.read().then(async res => { while (!res || !res.done) { res = await streamReader.read() console.log(res.value) } }) }) .catch(console.error)

me sale este error:

ReferenceError: ReadableStream no está definido en ndjsonStream

Por lo tanto, parece que la res de la recuperación es nula o indefinida, pero la recuperación de otras API funciona bien.

También intenté usar axios en lugar de node-fetch así:

 import ndjsonStream from "can-ndjson-stream" import axios from "axios" axios .get("https://lichess.org/api/tv/feed") .then(res => ndjsonStream(res.data)) .then(stream => { const streamReader = stream.getReader() streamReader.read().then(async res => { while (!res || !res.done) { res = await streamReader.read() console.log(res.value) } }) }) .catch(console.error)

Pero simplemente se cuelga y no muestra ningún resultado. Gracias a cualquiera que pueda arrojar algo de luz sobre esto u ofrecer alguna forma alternativa de ejecutar esto en Node.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Gracias a los comentarios de tromgy, pude hacer algo que funciona. Fui con la hiperbúsqueda de la biblioteca para ayudar a manejar la solicitud y la canalización de la transmisión. También usé la biblioteca ndjson .

Aquí hay un código de trabajo:

 hyperquest("https://lichess.org/api/tv/feed") .pipe(ndjson.parse()) .on("data", console.log)

Tenga en cuenta que puede manipular los objetos a medida que llegan con el segundo argumento de on() , como se muestra a continuación.

 ... .on("data", (obj) => { foo(obj) })
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!