2013-07-05 6 views
1

node.js + clojure에서 콘솔에 현재 datetime 형식을 표시하려고합니다. momentjs . ClojureScript + momentjs (node.js)가 .format ("dddd, MMMM Do YYYY, h : mm : ss a")와 함께 실패 함

는 작업 노드 JS 번호 :

var moment = require("./lib/moment/moment.js"); 
console.log(moment().format("dddd, MMMM Do YYYY, h:mm:ss a")); 

콘솔 출력 그래서

$ node app1    
Friday, July 5th 2013, 9:57:07 am 

, I는 아래 clojureScript 코드 시도 :

(ns rxcljs.core 
    (:use [cljs.nodejs :only [require]]) 
) 
(def log #(.log js/console %)) 
(def moment (require "./lib/moment/moment.js")) 

(->> (-> (moment) 
      (.format "dddd, MMMM Do YYYY, h:mm:ss a") 
    ) 
    (log) 
) 

콘솔 출력

된다
$ node app    
FridaynullundefinedJulyundefined5thundefined2013nullundefined9null56null31undefinedam 

날짜/시간은 부분적으로 null 어떤 이유로 표시됩니다.

은 JS 컴파일 된 코드 : 문제가 발생

var rxcljs = {core:{}}; 
rxcljs.core.log = function(a) { 
    return console.log(a) 
}; 
rxcljs.core.moment = cljs.nodejs.require.call(null, "./lib/moment/moment.js"); 
rxcljs.core.log.call(null, rxcljs.core.moment.call(null).format("dddd, MMMM Do YYYY, h:mm:ss a")); 

요점은 그 문제가되지 같습니다

rxcljs.core.moment.call(null).format("dddd, MMMM Do YYYY, h:mm:ss a") 

어떤 생각? 감사.

답변

4

Moment.js 2.0.0과 ClojureScript의 알려진 비 호환성으로 인해 this commitDavid Altenburg으로 고정되었습니다. 여기에 커밋 메시지는 다음과 같습니다

Format 함수는 이제 오히려 변수가 함수 인 경우 VAR의 호출이 결정 에 "대해서 typeof"보다 VAR의 "instanceof를"을 사용합니다.

이렇게하면 String.prototype.call을 함수로 정의하는 ClojureScript와의 비 호환성을 수정합니다.

현재 개발 분기에있는 버전이 정상적으로 작동합니다.

+0

매우 정확한 보고서를 보내 주셔서 감사합니다. 인상적인 미하일. –

+1

FYI - Moment.js 2.1.0 릴리스에 포함되어 있습니다. –