簡體   English   中英

ClojureScript + momentjs(node.js)失敗了.format(“dddd,MMMM Do YYYY,h:mm:ss a”)

[英]ClojureScript + momentjs (node.js) fails with .format(“dddd, MMMM Do YYYY, h:mm:ss a”)

我試圖在node.js + clojure部署momentjs上顯示當前日期時間格式。

工作節點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

所以,我嘗試了如下的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

由於某種原因,日期時間部分呈現為一堆nullundefined

編譯的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")

任何想法? 謝謝。

這是由於Moment.js 2.0.0與ClojureScript的已知不兼容性,由David Altenburg此提交中修復。 這是提交消息:

格式函數現在在var上使用“instanceof”而不是var的調用上的“typeof”來確定變量是否是函數。

這修復了與ClojureScript的不兼容性,ClojureScript將String.prototype.call定義為函數。

當前在開發分支中的版本工作正常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM