'Fastify - Sending a PDF from node.js server

I have an API built on node.js with Fastify.

The server generates a PDF which I'm then trying to send to a client via an API request. However the request I see in Chrome under network shows the type as XHR, despite me having set the content type like so:

const fs = require('fs')
const stream = fs.createReadStream('../test.pdf', 'binary')
reply.header('Content-Type', 'application/pdf')
reply.send(stream).type('application/pdf').code(200)

On the client side, I'm just making a simple POST request and assuming if its a PDF, the browser will just download it.

axios.post('http://127.0.0.1:8080/contract', requestBody)
.then((response: any) => {
   setIsSubmitting(false)
})
.catch((error: any) => {
   //TODO
});

(Also, the other thought I had was is this actually the correct way to send i.e. with fs.createReadStream - it's just a static file).

Any ideas what I'm doing wrong in the above.



Solution 1:[1]

I had the same problem. Found out this is a problem with fastify, you can upgrade to the latest (Today is 3.27.2).

The issue: https://github.com/fastify/fastify/issues/3283

Bug fix: https://github.com/fastify/fastify/pull/3285

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Cesarvspr