El cliente de Node.js para jsreport funciona bien con node.js o vanilla; sin embargo, cuando lo implemento con React, recibo varios errores de biblioteca que no aparecen cuando el código se ejecuta directamente en node. ¿Cómo puedo usarlo con React?
const client = require("jsreport-client")("http://localhost:5488/"); const data = { template: { shortid: "2_Kw0BRuOm", recipe: "html-to-xlsx", data: { people: [{ name: "Omar rafat", age: "20", job: "Software Engineer" }], }, }, }; async function render() { const res = await client.render(data); const responseBuffer = await res.body(); const fileURL = URL.createObjectURL(responseBuffer); window.open(fileURL); } class App extends React.Component { myfun = () => { render().catch(console.error); }; render() { return ( <div className="App"> <button onClick={() => { this.myfun(); }} > Click me </button> </div> ); } } export default App;La parte posterior a la respuesta del búfer debe ser
await fs.writeFile("out.xlsx", responseBuffer);sin embargo, enviar el archivo al sistema de archivos del servidor no es lo que quiero en el caso de React, pero debido al siguiente error, todavía no sé exactamente cómo manejar la descarga de la respuesta jsreport desde el navegador.
El error que recibo después de instanciar la solicitud es
y la linea
const res = await client.render(data);parece ser lo que lo desencadena.
jsreport tiene un cliente diferente para aplicaciones basadas en navegador. https://jsreport.net/learn/browser-client
npm install jsreport-browser-client-dist jsreport.renderAsync(request).then(function(res) { //open in new window window.open(res.toDataURI()) //get the content as string res.toString() //open download dialog res.download('test.pdf') });