javascriptnode.jsexpressgetjson

Node.js - "TypeError - res.setHeader is not a function"


I'm trying to load JSON from a URL to a variable and send it back to the client's javascript

var getJSON =require('get-json');

app.post('/json', function(req, res) {
    getJSON(url, function(err, res){
        if(err)
        {
           console.log(err);
        }
        else
        {
           res.setHeader('content-type', 'application/json');
           res.send(JSON.stringify({json: res.result}));
        }
    });
});

Every time I run the code the server says that res.setHeader isn't a function and the rest breaks.


Solution

  • Both post and getJSON callbacks have same res variable name. Try this:

    var getJSON =require('get-json');
    
    app.post('/json', function(req, res) {
      getJSON(url, function(err, response){
        if(err)
        {
           console.log(err);
        }
        else
        {
           res.setHeader('content-type', 'application/json');
           res.send(JSON.stringify({json: response.result}));
        }
      });
    });