6

I'm using request module in my node.js(express) application. Sometimes this statusCode related error occurs:

TypeError: Cannot read property
'statusCode' of undefined at Request._callback

This is my whole code:

request("https://www.googleapis.com/youtube/v3/search?part=snippet&q=" + docs[0].title + "&type=video&key=(some-key-variable)", {
                json: true
              }, function(error, response, resultData) {
                var yArr = [];
                if (!error || response.statusCode == 200) {
                  for (var i = 0; i < config.youtubeVideoCount; i++) {
                    var vArr = resultData.items[i];
                    yArr.push(vArr);
                  }
                } else {
                  console.log("can't find video");
                }
              });

response.statusCode gives an error sometimes. How can I control that the request is successful? Is it bug in the request module? Why is statusCode undefined sometimes? I think statusCode should be available every time.

Answer Probably it is response timeout issue and u should do an if statement like this;

if (response === undefined || response.statusCode != 200){ console.log("there is a prob"); }

this code firstly control response variable and then response.statuscode , so if response undefined don't control response.statusCode thus , we can't get any error.

3
  • 1
    If the error is truthy then response my be undefined but it will still check response.statusCode Commented Apr 20, 2015 at 15:41
  • When statusCode is undefined, what is the value of readyState? I have seen browser environments that (incorrectly) don't set a status value until readyState is 2 or greater. Commented Apr 20, 2015 at 15:42
  • there is no readyState property into response , console log was undefined everyime Commented Apr 20, 2015 at 15:53

1 Answer 1

7

This is a workaround, as there might be several reasons why response is undefined:

if (!error && response.statusCode == 200) {
    // do your stuff here..
}
Sign up to request clarification or add additional context in comments.

5 Comments

What reasons can be ?
@OsmanErdi, there can be many, e.g timeout issues, bugs in implementation and a bunch of others. In any case you should use a workaround to be clear
i discovered that error parameter in request module controls response undefined or null , if null or undefined , return error because of this , we should write error control at top pf if statement ex; if (error || response.statusCode != 200) it is true
@OsmanErdi,, edited, correct the error argument describes and signifies any errors in the request, howevr i think this bis what you need if (!error && response.statusCode == 200), since you need to run your code when no error exists and the request is indeed found (200 statusCode)
How could if (!error && response.statusCode == 200) be a workaround when response can be undefined?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.