alltherooms / cached-request

Node.js module to perform HTTP requests with caching support
MIT License
61 stars 23 forks source link

SyntaxError: Unexpected end of input #6

Closed Freaders closed 8 years ago

Freaders commented 8 years ago

[15:0:55:379] Message: "Checking min deposite - 863830190" undefined:0

SyntaxError: Unexpected end of input at Object.parse (native) at ReadStream. (/bot2/node_modules/cached-request/lib/cached-request.js:179:35) at ReadStream.emit (events.js:129:20) at _stream_readable.js:908:16 at process._tickCallback (node.js:355:11)

Does anyone know what can cause this or how to fix it? It happens sometimes and crashes whole script. Thanks

Freaders commented 8 years ago

it is happenning more and more offten, it is like some kind of cache (not the set one) is full

danypype commented 8 years ago

@Freaders Do you mind sharing some code to reproduce the error? I'd like to understand what you're trying to do. Thank you.

Freaders commented 8 years ago
cachedRequest(
    { method: 'GET'
    , ttl: 3000
    , uri: 'https://bitskins.com/api/v1/get_item_price/?api_key=8c7ac7b9-6cb6-4ac2-b7e8-0e7a18b1b8ab&code=' + totp.now() + '&names=' + encodeURIComponent(items[i].market_hash_name) + '&delimiter=!END!'
    }, function(error, response, body){
        if (!error && response.statusCode == 200) {
                try {
                                var price = JSON.parse(body);
                            } catch(err) {
                                return deferred.reject('Bitskins price parse error');
                            }
                if (typeof price == 'undefined' || typeof price.data.prices[0].price == 'undefined') {
                    return deferred.reject('Bitskins price bug');
                }
                try {
                    price = price.data.prices[0].price;
                } catch(err) {
                    return deferred.reject(err);
                }
                price = parseFloat(price);

                price = Math.round(price * 100) / 100;

                //helper.msg('Bitskins price :' + price);

                items[i].price = price;
                summ += price;

                deferred.resolve();
                }
                else {
          return deferred.reject('ERROR: Bitskins response is ' + body);
                }
        });
elhoyos commented 8 years ago

@Freaders:

This looks like the cached header file is empty/malformed. I'm guessing the problem explodes here on latest.

> JSON.parse('')
SyntaxError: Unexpected end of input
    at Object.parse (native)
    ...
> JSON.parse('{')
SyntaxError: Unexpected end of input
    at Object.parse (native)
    ...
danypype commented 8 years ago

I'm closing this since we didn't hear back from @Freaders.