请在2024 Clojure状态调查!分享您的想法。

欢迎!有关如何使用本网站的更多信息,请参阅关于页面。

0 投票
ClojureScript

我希望开发用于远程nodejs目标的ClojureScript,编译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来停止我报告的node挂起,并获取

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设置的良好解决方法。

2 个回答

0 投票

评论由:dnolen

在IRC或Slack中讨论这个问题可能更容易。这里有太多不同的问题都集中在这个问题上。谢谢。

0 投票
参考:https://clojure.atlassian.net/browse/CLJS-1933 (由 longworthml 报告)
...