When the fs module reads your existing manifest.json file, it is converting it into one large utf-8 string, instead of actual JSON.
To the human eye, it looks like regular JSON, but it’s actually just a bunch of JSON inside a string.
To the server, it just sees the string and sets the mime type as it should, as text/plain, since it technically is.
You could try replacing res.json(manifest); with res.send(JSON.stringify(manifest));, which should take the value that fs got from manifest.json, and attempt to convert it to properly formatted JSON with the proper mime type.