我正在尝试安排几个 cron 作业来为我的网络应用程序中的不同实体生成序列号。但是我遇到了这个问题,当我循环每个表时,它说它与 date.js 有关。我没有对日期对象做任何事情?反正不在这个阶段。有几个猜测是 cron 对象在其代码中执行日期操作并引用 date.js。我正在使用 date.js 来访问诸如 ISO 日期之类的内容。
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();
});
}
});
}
这是我检查 server.js.logs\0.txt 文件时收到的错误消息:
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) 在 Date.getTimezone (C:\node\w\WebRole1\public\javascripts\date.js:56:228) 在 Object ._getNextDateFrom (C:\node\w\WebRole1\node_modules\cron\lib\cron.js:88:30) 在 Object.sendAt (C:\node\w\WebRole1\node_modules\cron\lib\cron.js: 51:17) 在 Object.getTimeout (C:\node\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:
我在我的 database.js 文件中使用这一行:
要求('../public/javascripts/date');
因为 date.js 是全球性的,我只需要这样做一次,对吗?即它有一堆内置日期对象的原型(扩展)。
在 manageSerialNumbers.js 中我只是在做一个回调,它们没有执行代码,因为我已经全部注释掉了,但仍然收到这个错误。
任何帮助或建议将不胜感激。
好的,我已经注释掉了 date.js 模块,现在我收到了这个错误:
您指定了时区,但未包含该time
模块。时区功能被禁用。请安装time
模块以在您的应用程序中使用时区。
当我检查 cron.js 模块时,它的顶部有以下语句:
var CronDate = Date;
try {
CronDate = require("time").Date;
} catch(e) {
//no time module...leave CronDate alone. :)
}
所以这会得出结论,它确实与 date.js 模块有关?
任何人都可以看到有什么问题。
干杯