我希望从ClojureScript内部使用Coinbase Bitcoin Exchange node.js API。
目标是复制页面上的第一个javascript示例:
var CoinbaseExchange = require('coinbase-exchange');
var publicClient = new CoinbaseExchange.PublicClient();
但是在下面的代码中,我首先尝试访问
PublicClient
:(ns plutus.core
(:require
[cljs.nodejs :as nodejs]))
(def coinb (nodejs/require "coinbase-exchange"))
(nodejs/enable-util-print!)
(defn -main [& args]
(def pc (js/PublicClient.)))
(println pc))
(set! *main-cli-fn* -main)
尽管我也尝试过(带有类似的变化),但这会抛出一个
ReferenceError: PublicClient is not defined
:(def pc (. coinb (PublicClient)))
(def pc (.PublicClient coinb))
(def pc (:PublicClient coinb))
通过打印
nil
都失败了。我已经仔细研究了this article的任何相关示例,但是对于使用node.js如何影响事物的命名(如果有的话),我感到困惑。 最佳答案
实际上,这不是一个命名问题,它更多地是关于如何将new
与对象中的嵌套属性一起使用。不幸的是,事实之后您无法获得对PublicClient
的引用,然后再对new
进行引用。
(new (.-PublicClient coinb))
即使
(.-PublicClient coinb)
返回一个函数,它也不起作用。您需要通过在ClojureScript中使用点标记来指向函数的位置:
(new coinb.PublicClient)
;; OR, more idiomatic
(coinb.PublicClient.)
那应该给你你想要的。
关于node.js - 如何从clojurescript调用node.js模块中的javascript?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34573147/