Node.js Cron Job Messing with Date Object

Posted by PazoozaTest Pazman on Stack Overflow See other posts from Stack Overflow or by PazoozaTest Pazman
Published on 2012-06-28T01:52:36Z Indexed on 2012/06/28 3:16 UTC
Read the original article Hit count: 190

Filed under:
|
|

I'm trying to schedule several cron jobs to generate serial numbers for different entities within my web app. However I am running into this problem, when I'm looping each table, it says it has something to do with date.js. I'm not doing anything with a date object ? Not at this stage anyway. A couple of guesses is that the cron object is doing a date thing in its code and is referencing date.js. I'm using date.js to get access to things like ISO date.

for (t in config.generatorTables) {
    console.log("t = " + config.generatorTables[t] + "\n\n");

    var ts3 = azure.createTableService();
    var jobSerialNumbers = new cronJob({
        //cronTime: '*/' + rndNumber + ' * * * * *',
        cronTime: '*/1 * * * * *',
        onTick: function () {
            //console.log(new Date() + " calling topUpSerialNumbers \n\n");
            manageSerialNumbers.topUpSerialNumbers(config.generatorTables[t], function () { });
        },
        start: false,
        timeZone: "America/Los_Angeles"
    });

    ts3.createTableIfNotExists(config.generatorTables[t], function (error) {
        if (error === null) {
            var query = azure.TableQuery
                .select()
                .from(config.generatorTables[t])
                .where('PartitionKey eq ?', '0')

            ts3.queryEntities(query, function (error, serialNumberEntities) {
                if (error === null && serialNumberEntities.length == 0) {
                    manageSerialNumbers.generateNewNumbers(config.maxNumber, config.serialNumberSize, config.generatorTables[t], function () {
                        jobSerialNumbers.start();
                    });
                }
                else jobSerialNumbers.start();
            });
        }
    });
}

And this is the error message I'm getting when I examine the server.js.logs\0.txt file:

C:\node\w\WebRole1\public\javascripts\date.js:56 onsole.log('isDST'); return this.toString().match(/(E|C|M|P)(S|D)T/)[2] == "D" ^ TypeError: Cannot read property '2' of null at Date.isDST (C:\node\w\WebRole1\public\javascripts\date.js:56:110) at Date.getTimezone (C:\node\w\WebRole1\public\javascripts\date.js:56:228) at Object._getNextDateFrom (C:\node\w\WebRole1\node_modules\cron\lib\cron.js:88:30) at Object.sendAt (C:\node\w\WebRole1\node_modules\cron\lib\cron.js:51:17) at Object.getTimeout (C:\node\w\WebRole1\node_modules\cron\lib\cron.js:58:30) at Object.start (C:\node\w\WebRole1\node_modules\cron\lib\cron.js:279:33) at C:\node\w\WebRole1\server.js:169:46 at Object.generateNewNumbers (C:\node\w\WebRole1\utils\manageSerialNumbers.js:106:5) at C:\node\w\WebRole1\server.js:168:45 at C:\node\w\WebRole1\node_modules\azure\lib\services\table\tableservice.js:485:7

I am using this line in my database.js file:

require('../public/javascripts/date');

is that correct that I only have to do this once, because date.js is global? I.e. it has a bunch of prototypes (extensions) for the inbuilt date object.

Within manageSerialNumbers.js I am just doing a callback, their is no code executing as I've commented it all out, but still receiving this error.

Any help or advice would be appreciated.

© Stack Overflow or respective owner

Related posts about node.js

Related posts about cron