如何在clojurescript的node.js模块中调用javascript?
我希望在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
,尽pipe我也尝试过(以及类似的变化):
-
(def pc (. coinb (PublicClient)))
-
(def pc (.PublicClient coinb))
-
(def pc (:PublicClient coinb))
所有这些都没有通过打印nil
。 我已经仔细研究了这篇文章的任何相关示例,但是我很困惑如何使用node.js影响事物的命名。
真的不是一个命名问题,更多的是关于如何在对象中使用new
的嵌套属性。 不幸的是,您无法获得对PublicClient
的引用,然后在事实之后再获得new
引用。
(new (.-PublicClient coinb))
即使(.-PublicClient coinb)
返回一个函数,它也不起作用。
你需要在ClojureScript中使用点符号来指向函数的位置:
(new coinb.PublicClient) ;; OR, more idiomatic (coinb.PublicClient.)
这应该给你你想要的。
其他人看到这个?
> ((.-getProducts (cb.PublicClient.)) (fn [_ _ _] nil)) #object[TypeError TypeError: self.makeRelativeURI is not a function]
- 在使用另一个lein项目时使用nodejs运行ClojureScript
- ClojureScript Electron app __dirname返回nil
- 使用Express.JS运行FIgwheel
- 没有Java的ClojureScript
- 在编译.cljs的时候如何在编译时定义目标env?
- ClosureScript&NodeJS:错误:No * print-fn * fn设置为评估环境
- (node / enable-util-print!)做什么?
- Clojurescript + Node.js 0.12.7问题(错误“process.binding('evals')没有这样的模块:evals”)
- Node.js API的语言转换为ClojureScript