我希望从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/

10-12 12:31