我想开发针对远程节点目标进行编译的 ClojureScript,并在我的开发机器上运行 REPL。
https://github.com/clojure/clojurescript/wiki/Remote-REPL 建议了一种实现这种方式,然而
!) 我还没有成功使其工作。
2) 我不喜欢这个解决方案依赖于相同的绝对文件路径来输出编译器,最好是使用匹配的相对路径。
我在论坛上发帖寻求帮助,但没有解决所有问题
https://groups.google.com/forum/#!topic/clojurescript/Y4ajOcej8Qo
自那以后我又取得了一些进展
1) 我深入研究了 cljs.repl.node 源代码,发现可以通过指定 repl-env :debug-port 来停止我报告的节点挂起问题,并获取
Clojure 1.8.0
调试器正在监听端口 5002
ClojureScript Node.js REPL 服务器正在监听 5001
TypeError: Cannot read property 'nameToPath' of undefined
at Object.goog.require (repl:2:49)
at repl:1:-56
at Object.exports.runInThisContext (vm.js:54:17)
at Domain.<anonymous> ((link: stdin):50:34)
at Domain.run (domain.js:221:14)
at Socket.<anonymous> ((link: stdin):49:25)
at emitOne (events.js:77:13)
at Socket.emit (events.js:169:7)
at readableAddChunk (_stream_readable.js:146:16)
at Socket.Readable.push (_stream_readable.js:110:10)
TypeError: goog.provide is not a function
at repl:1:-56
at Object.exports.runInThisContext (vm.js:54:17)
at Domain.<anonymous> ((link: stdin):50:34)
at Domain.run (domain.js:221:14)
at Socket.<anonymous> ((link: stdin):49:25)
at emitOne (events.js:77:13)
at Socket.emit (events.js:169:7)
at readableAddChunk (_stream_readable.js:146:16)
at Socket.Readable.push (_stream_readable.js:110:10)
at TCP.onread (net.js:523:20)
要退出,请输入: :cljs/quit
这看起来像是一种路径问题,但我还没有解决。
我对我原始的相对路径设置进行了一些调查,以尝试确定问题所在
1) 我通过禁用分析缓存消除了编译输出中的绝对路径。
2) 我在 REPL 端口上运行了 wireshark,发现 REPL 正在发送绝对路径,这目前使得相对路径选项不可行。
目前我对 REPL 操作的知识还有很多空白,不知道用什么方法才能得到一个好的无浏览器远程 REPL 设置解决方案。