代码之家  ›  专栏  ›  技术社区  ›  ma2s

如何使用bignumber。带有Clojurescript的js:npm deps功能

  •  1
  • ma2s  · 技术社区  · 8 年前

    我一直在学习教程 https://anmonteiro.com/2017/03/requiring-node-js-modules-from-clojurescript-namespaces/

    使用左键盘效果很好,但当我尝试使用 bignumber.js 我遇到了问题。

    {:main "npm-deps-test.core"
     :output-to "dev-compiled/npm-deps-test.js",
     :output-dir "dev-compiled",
     :target :nodejs,
     :optimizations :none,
     :source-map true
     :npm-deps {:bignumber.js "4.0.2"
                :left-pad "1.1.3"}}
    

    这是带有输出的代码:

    (ns npm-deps-test.core
      (:require [left-pad]
                [bignumber.js :as bignumber]))
    
    (enable-console-print!)
    
    (comment
      (type bignumber)
      ; => #object[Object "function Object() { [native code] }"]
    
      (aget bignumber "__proto__" "constructor")
      ; => #object[Object "function Object() { [native code] }"]
    
      (bignumber "123")
      ; #object[TypeError TypeError: module$Users$matus$www$clojure_hacking$npm_deps_test$node_modules$bignumber_js$bignumber is not a function]
      ; => nil
    
      (new bignumber "124")
      ; #object[TypeError TypeError: module$Users$matus$www$clojure_hacking$npm_deps_test$node_modules$bignumber_js$bignumber is not a constructor]
      ; => nil
    
      (bignumber. "123")
      ; #object[TypeError TypeError: module$Users$matus$www$clojure_hacking$npm_deps_test$node_modules$bignumber_js$bignumber is not a constructor]
      ; => nil
    
      (left-pad 42 5 0)
      ; => 00042
      )
    

    你知道这为什么没有按预期效果吗?

    使用 [org.clojure/clojurescript "1.9.671"] [lein-figwheel "0.5.11"]

    1 回复  |  直到 8 年前
        1
  •  2
  •   Community Mohan Dere    5 年前

    这对我在使用ClojureScript REPL时有效 [org.clojure/clojurescript "1.9.562"]

    user=> (require '[bignumber.js :as BigNumber])
    nil
    user=> (BigNumber. "123")
    #object[BigNumber 123]
    user=> (-> (BigNumber. "12345678") (.toExponential))
    "1.2345678e+7"
    

    我猜你看到的行为可能是一个bug或破坏性的改变 [org.clojure/clojurescript "1.9.671"]

    更新:

    这确实是一个今天修复的错误:

    https://github.com/clojure/clojurescript/commit/00df4ae8a49005dbbb3ad87bf1a24e71897d74f7

    我建议你降级到一个更老(但最近!)ClojureScript的版本,例如。 [org.clojure/clojurescript“1.9.562”]