2012-06-28 4 views
0

웹 응용 프로그램에서 여러 엔티티의 일련 번호를 생성하도록 여러 cron 작업을 예약하려고합니다. 그러나 나는 각 테이블을 반복 할 때이 문제를 겪고있다. date.js와 관련이 있다고 말한다. 나는 데이트 대상을 가지고 아무것도하지 않을거야? 어쨌든이 단계가 아닙니다. 두 가지 추측은 cron 객체가 코드에서 날짜를 처리하고 date.js를 참조한다는 것입니다. date.js를 사용하여 ISO 날짜와 같은 항목에 액세스합니다.Node.js 날짜 객체와 함께 작동하는 Cron Job

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 : \ 노드 \ \ WebRole1 w 공공 \ 자바 스크립트 \를 \ 날짜 .js : 56 onsole.log ('isDST'); . (| C | M | P) (S |/(E D) T /) this.toString() 일치를 반환 [2] == "D" ^ 오류 : 속성을 읽을 수 없습니다 '2'널 중 Date.isTST (C : \ node \ w \ WebRole1 \ public \ javascripts \ date.js : 56 : 110) (Date : (C : \ node \ w \ WebRole1 \ node_modules \ cron \ lib \ cron.js : 88 : 30) 에서 Object.sendAt (C : \ node \ w \ WebRole1 \ node_modules \ cron \ LIB \는 cron.js : Object.getTimeout 17) (C : 51 58 : 30)에 Object.start (C : \ 노드 \ \ 노드 \를 \ WebRole1 \ node_modules \ 크론 \ LIB \ cron.js 승 C 33) : 279 : \ server.js \ \ WebRole1 w 노드 \ 169 : Object.generateNewNumbers에서 46 (C : \ 노드 \ w \ WebRole1 \ WebRole1 \ node_modules \ 크론 \ LIB \ cron.js w \ utils \ ma nageSerialNumbers.js : 106 : 5)에 C : \ \ WebRole1 server.js \ w 노드 \ 168 C 45 : \ 푸른 \ LIB \ 서비스 \ \ WebRole1 \ node_modules w 노드 \ \ 테이블 \ tableservice.js : 485 : 내 database.js 파일에이 라인을 사용하고 7

:

이 요구를 ('../ 공공/자바 스크립트/날짜'); date.js 글로벌 때문에

, 나는 한 번만 수행해야한다는 것을 맞습니까? 나는. inbuilt 데이트 객체를위한 프로토 타입 (확장)을 가지고있다. manageSerialNumbers.js 내에서 그냥 콜백을하고있는 중이 야

, 어떤 코드가 나는 모두를 주석 한대로 실행,하지만 여전히 오류가 발생 그들의입니다.

도움이나 조언을 보내 주시면 감사하겠습니다.

좋아 나는 date.js 모듈을 주석 처리했고 지금은이 오류를 받고 있어요 :

당신은 시간대를 지정하지만 time 모듈을 포함하지 않았습니다. 표준 시간대 기능을 사용할 수 없습니다. 응용 프로그램에 시간대를 사용하려면 time 모듈을 설치하십시오.

var CronDate = Date; 
try { 
    CronDate = require("time").Date; 
} catch(e) { 
    //no time module...leave CronDate alone. :) 
} 

그래서이는 date.js 모듈을 함께 할 수있는 뭔가를 가지고 있음을 다음 결론을 내릴 것입니다 :

나는 cron.js을 검사

는 상단이 문이 모듈?

누구나 무엇이 잘못되었는지 확인하십시오.

환호

답변

0

나는 잠시 동안 date.js를 사용하고 Node.js를/V8의 날짜 개체가 이미 ISO 지원, 입력과 출력을 가지고 있었고, Date.js은 매우 구체적인 추가 것을 알게되었다 가장자리 케이스. 정확히 데이트가 필요해 .js?

당신이 date.js을 필요로 할 경우

... 코드만큼이 같은 프로세스에서 실행되고있는 사실

is that correct that I only have to do this once, because date.js is global?

. Azure의 Node.js 나 사용중인 cronJob 메서드를 제공하는 라이브러리에 익숙하지 않지만, 아마도 자신의 V8 인스턴스가있는 새로운 프로세스를 생성하고 Date 객체의 변경 사항을 잃어 버릴 수 있습니까? (따라서 해당 코드에서 require가 다시 나타납니다.)

관련 문제