Back

Explore Courses Blog Tutorials Interview Questions
0 votes
2 views
in Web Technology by (19.9k points)

I am trying to use a manifest.json file, which refuses to work if the type isn't set to application/json.

I have a nginx server running node/express.

I put the manifest.json in my public folder and the server reads the type as text/plain, and throws an error.

Under /etc/nginx/config/ there is already a line that reads:

application/json                      json;

I even tried serving the file with express and specifying the header:

var manifest = fs.readFileSync('routes/manifest.json', 'utf8');

router.get('/manifest.json', function(req, res) {

    res.header("Content-Type", 'application/json');

    res.json(manifest);

});

And that still reads it as text/plain.

I'm guessing it's something I need to do with nginx, but all the suggestions I've found talk about files I don't have.

1 Answer

0 votes
by (25.1k points)

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.

Browse Categories

...