bodil / cljs-noderepl

A ClojureScript REPL running on Node.JS
166 stars 21 forks source link

IO Exception: The pipe has been ended #6

Closed doffltmiw closed 11 years ago

doffltmiw commented 11 years ago

When I start lein trampoline noderepl, I'm getting the following error.

Exception in thread "main" java.io.IOException: The pipe has been ended
        at java.io.FileOutputStream.writeBytes(Native Method)
        at java.io.FileOutputStream.write(Unknown Source)
        at java.io.BufferedOutputStream.write(Unknown Source)
        at sun.nio.cs.StreamEncoder.writeBytes(Unknown Source)
        at sun.nio.cs.StreamEncoder.implWrite(Unknown Source)
        at sun.nio.cs.StreamEncoder.write(Unknown Source)
        at java.io.OutputStreamWriter.write(Unknown Source)
        at java.io.BufferedWriter.flushBuffer(Unknown Source)
        at java.io.BufferedWriter.write(Unknown Source)
        at java.io.Writer.write(Unknown Source)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at clojure.lang.Reflector.invokeMatchingMethod(Reflector.java:93)
        at clojure.lang.Reflector.invokeInstanceMethod(Reflector.java:28)
        at cljs.repl.node$js_eval.invoke(node.clj:63)
        at cljs.repl.node$load_resource.invoke(node.clj:101)
        at cljs.repl.node$repl_env.doInvoke(node.clj:125)
        at clojure.lang.RestFn.invoke(RestFn.java:397)
        at cljs.repl.node$run_node_repl.invoke(node.clj:130)
        at G__428$eval2937$fn__2939.invoke(NO_SOURCE_FILE:1)
        at G__428$eval2937.invoke(NO_SOURCE_FILE:1)
        at clojure.lang.Compiler.eval(Compiler.java:6511)
        at clojure.lang.Compiler.eval(Compiler.java:6501)
        at clojure.lang.Compiler.eval(Compiler.java:6501)
        at clojure.lang.Compiler.eval(Compiler.java:6477)
        at clojure.core$eval.invoke(core.clj:2797)
        at clojure.main$eval_opt.invoke(main.clj:297)
        at clojure.main$initialize.invoke(main.clj:316)
        at clojure.main$null_opt.invoke(main.clj:349)
        at clojure.main$main.doInvoke(main.clj:427)
        at clojure.lang.RestFn.invoke(RestFn.java:421)
        at clojure.lang.Var.invoke(Var.java:419)
        at clojure.lang.AFn.applyToHelper(AFn.java:163)
        at clojure.lang.Var.applyTo(Var.java:532)
        at clojure.main.main(main.java:37)

Here's my project.clj file.

(defproject hello "0.1.0-SNAPSHOT"
  :plugins [[org.bodil/lein-noderepl "0.1.6"]]
  :dependencies [[org.clojure/clojure "1.4.0"]
                 [org.clojure/clojurescript "0.0-1586"]])

I'm running it with node 0.8.20 on Windows 8

doffltmiw commented 11 years ago

Changing

(let [launch-script (str "eval(require(\"fs\").readFileSync(\"" (load-as-tempfile "cljs/repl/node_repl.js") "\",\"utf8\"))")

to

(let [launch-script (str "eval(require('fs').readFileSync('" (string/replace (load-as-tempfile "cljs/repl/node_repl.js") "\\" "/") "','utf8'))")

solved the problem.

The double quote and backslash characters were causing the trouble.