J'essaie de planifier plusieurs tâches cron pour générer des numéros de série pour différentes entités de mon application Web. Cependant, je suis confronté à ce problème, quand je boucle chaque table, il dit qu'il a quelque chose à voir avec date.js. Je ne fais rien avec un objet date? Pas à ce stade de toute façon. Un couple de suppositions est que l'objet cron fait une chose de date dans son code et fait référence à date.js. J'utilise date.js pour avoir accès à des choses comme la date ISO.Node.js Cron Job Messing avec l'objet 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();
});
}
});
}
Et voici le message d'erreur que je reçois quand j'examine le fichier server.js.logs \ 0.txt de:
C: \ noeud \ w \ WebRole1 \ javascripts public \ \ Date .js: 56 onsole.log ('isDST'); return this.toString(). match (/ (E | C | M | P) (S | D) T /) [2] == "D" ^ TypeError: Impossible de lire la propriété '2' de null at Date.isDST (C: \ noeud \ w \ WebRole1 \ public \ javascripts \ date.js: 56: 110) à Date.getTimezone (C: \ noeud \ w \ WebRole1 \ public \ javascripts \ date.js: 56: 228) à Object._getNextDateFrom (C: \ noeud \ w \ WebRole1 \ nod_modules \ cron \ lib \ cron.js: 88: 30) à Object.sendAt (C: \ node \ w \ WebRole1 \ node_modules \ cron \ lib \ cron.js: 51: 17) à Object.getTimeout (C: \ noeud \ w \ WebRole1 \ node_modules \ cron \ lib \ cron.js: 58: 30) à Object.start (C: \ node \ w \ WebRole1 \ node_modules \ cron \ lib \ cron.js: 279: 33) à C: \ node \ w \ WebRole1 \ server.js: 169: 46 à Object.generateNewNumbers (C: \ node \ w \ WebRole1 \ utils \ ma nageSerialNumbers.js: 106: 5) à l'adresse C: \ node \ w \ WebRole1 \ server.js: 168: 45 à l'adresse C: \ node \ w \ WebRole1 \ node_modules \ azure \ lib \ services \ table \ tableservice.js : 485: 7
J'utilise cette ligne dans mon fichier database.js:
require ('../ public/JavaScripts/jour);
est-ce correct que je n'ai à faire une seule fois, car date.js est global? C'est à dire. il a un tas de prototypes (extensions) pour l'objet de date intégré.
Dans manageSerialNumbers.js Je suis juste en train de faire un callback, il n'y a pas de code qui s'exécute comme je l'ai commenté, mais qui continue de recevoir cette erreur.
Toute aide ou conseil serait apprécié.
Ok je l'ai commenté le module date.js et maintenant je reçois cette erreur:
Vous avez spécifié un Timezone mais n'ai pas inclus le module time
. La fonctionnalité de fuseau horaire est désactivée. Veuillez installer le module time
pour utiliser les fuseaux horaires dans votre application.
Lorsque j'examine le module cron.js il a cette déclaration au sommet:
var CronDate = Date;
try {
CronDate = require("time").Date;
} catch(e) {
//no time module...leave CronDate alone. :)
}
Donc, ce serait conclure que elle a quelque chose à voir avec le module date.js?
Tout le monde voit ce qui est mal.
acclamations