Clojurescript使用nodejs来读取stdin
我无法使用ClojureScript从NodeJs读取stdin。 理想情况下,最终的命令是java -cp cljs.jar:src clojure.main node.clj
后跟node main.js
Javascript版本正常工作,但我无法使用ClojureScript来使用它。
Clojurescript
(ns hello-world.core (:require [clojure.string :as string] [cljs.nodejs :as nodejs])) (nodejs/enable-util-print!) (defn -main [& args] (let [readline (js/require "readline") rl (.createInterface readline js/process.stdin js/process.stdout)] (.on rl "line" (fn [line] (def lineVector (clojure.string/split line #" ")) (if (and (nil? lineVector) (< (get lineVector 0) 10) (< (get lineVector 1) 10)) (+ (get lineVector 0) (get lineVector 0))))))) (set! *main-cli-fn* -main)
使用Javascript
var readline = require('readline'); process.stdin.setEncoding('utf8'); var rl = readline.createInterface({ input: process.stdin, terminal: false }); rl.on('line', readLine); function readLine (line) {...}
我收到以下错误信息:
TypeError:a.ac不是函数Function.be.w(/Users/tinatuh/Workspace/AlgorithmicToolbox-Coursera/main.js:212:47)在be(/ Users / tinatuh / Workspace / AlgorithmicToolbox-Coursera / main .js:211:409)at Jc(/Users/tinatuh/Workspace/AlgorithmicToolbox-Coursera/main.js:108:60) )在对象。 (module.js:652:10)处的Module._compile(module.js:641:30)处的(/Users/tinatuh/Workspace/AlgorithmicToolbox-Coursera/main.js:212:506) )在Function.Module._load(module.js:495:3)处的try.ModuleLoad(module.js:503:12)处的Module.load(module.js:560:32)
看起来您正在使用ClojureScript / Closure编译中的高级优化function,它会大量重命名函数和variables,以使输出JavaScript代码更小 。
您可以尝试使用简单的( :simple
)优化,或者提供externs定义,这将有助于Closure编译器正确地处理您的库和代码(引用的网页包含使用extern的示例项目的链接)。
在你的代码中,如何调用readline.createInterface
还有另外一个问题:它期望options对象,而不是传递给它的是裸选项值。 你需要像下面这样调用它:
(.createInterface readline #js {:input js/process.stdin :output js/process.stdout})
- 使用Aleph / Laminaasynchronous访问MongoDB
- ClojureScript + momentjs(node.js)以.format(“dddd,MMMM Do YYYY,h:mm:ss a”)失败
- (node / enable-util-print!)做什么?
- 使用ClojureScript写入meteor
- 如何不完整的ClojureScript? (范围)(迭代)等
- 将Clojurescript Repl连接到正在运行的节点进程的方法
- 如何将Macchiato clojurescript应用程序部署到Heroku免费帐户?
- 我的ClojureScript翻译这个JS函数是否习惯?
- Node.js API的语言转换为ClojureScript