Javascript: Cannot assign to read only property '_epoch' of false

18,275

It looks like the issue is that your processResponse() callback is actually being given a value of false. So essentially you are trying to assign the _epoch property of a false value.

See: https://developers.google.com/api-client-library/javascript/reference/referencedocs#gapiclientRequest

From the manual:

The callback function which executes when the request succeeds or fails. jsonResp contains the response parsed as JSON. If the response is not JSON, this field will be false.

When you're running javascript in strict mode ('use strict'), it will raise a TypeError like you are experiencing:

'use strict';
var processResponse = function(response) {
    response._epoch = (new Date()).getTime();
};

processResponse(false);   // Uncaught TypeError: Cannot assign to read only property '_epoch' of false 

JSFiddle: http://jsfiddle.net/0tq6mobm/

Suggest that you check the value of response before trying to assign your timestamp to the response.

Share:
18,275
Rusty Rob
Author by

Rusty Rob

Startups, Entrepreneurship, Ideas, Python, Google App Engine, Javascript, AngularJs, Scalable Web Apps, Mathematics, Go Lang, AI, Google Cloud Platform robert-king.com https://google.com/+RobertKing LinkedIn Quora Twitter

Updated on June 06, 2022

Comments

  • Rusty Rob
    Rusty Rob about 2 years

    I have a method to process the response from my google javascript client (gapi):

    var processResponse = function(response) {
                  result._state = 'loaded';
                  response._epoch = (new Date()).getTime();
                  ...
    

    A few times I have gotten the following error:

    TypeError: Cannot assign to read only property '_epoch' of false
        at processResponse (http://0.0.0.0:9000/scripts/services/haparaapi.js:110:31)
        at wrappedCallback (http://0.0.0.0:9000/bower_components/angular-scenario/angular-scenario.js:20892:81)
        at http://0.0.0.0:9000/bower_components/angular-scenario/angular-scenario.js:20978:26
        at Scope.$eval (http://0.0.0.0:9000/bower_components/angular-scenario/angular-scenario.js:21967:28)
        at Scope.$digest (http://0.0.0.0:9000/bower_components/angular-scenario/angular-scenario.js:21796:31)
        at Scope.$apply (http://0.0.0.0:9000/bower_components/angular-scenario/angular-scenario.js:22071:24)
        at http://0.0.0.0:9000/bower_components/angular-gapi/modules/gapi-client.js:121:32
        at https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en_GB.hE_reuZ6VdE.…/ed=1/am=AQ/rs=AGLTcCPj66Crj6soG8dKJE8lBSc_RPXXKA/cb=gapi.loaded_0:604:138
        at https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en_GB.hE_reuZ6VdE.…/ed=1/am=AQ/rs=AGLTcCPj66Crj6soG8dKJE8lBSc_RPXXKA/cb=gapi.loaded_0:579:311
        at Object.<anonymous> (https://apis.google.com/_/scs/apps-static/_/js/k=oz.gapi.en_GB.hE_reuZ6VdE.…1/ed=1/am=AQ/rs=AGLTcCPj66Crj6soG8dKJE8lBSc_RPXXKA/cb=gapi.loaded_0:163:76) 
    

    This bug doesn't usually happen so I haven't managed to log what the response actually looked like.

    What does the error mean? Should I not be assigning values to the response?