问题标签 [nrepl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1430 浏览

vim - 有没有办法从 Vim Fireplace 自动连接到 nREPL?

我正在lein repl一个项目中运行,它成功启动并创建了文件 target/repl-port.

使用 VIM 7.4.86 版,我可以使用如下命令:

:Connect nrepl://localhost:57644

然后 Vim 成功连接到 repl,一切都很好。

但是,我的理解是 vim-fireplace 能够使用 target/repl-port 文件自行建立这种连接。那没有发生。我确实看到了关于 lein 2.3 更改为使用 target/repl/repl-port 的评论(我在这个项目中使用 lein 2.0.0 - 这是我无法控制的要求)所以我尝试在这个位置创建一个符号链接,但是那也没有被捡起来。

我使用的 vim-fireplace 版本来自: github.com/tpope/vim-fireplace

在最新的提交中,目前是:

我希望自动化这种连接。我对 VIMscript 不是很感兴趣,所以我希望可能有某种方法来追踪问题,而不必深入研究源代码。

0 投票
3 回答
2889 浏览

clojure - 使用 ring/compojure 连接到 clojure nREPL 的问题

在 Java 1.7.0_21 Java HotSpot(TM) 64 位服务器 VM 上运行 Leiningen 2.3.4

我无法连接到 nREPL 服务器。

我使用 设置了一个新项目lein new luminus,然后将依赖项添加到吊桥 ( [com.cemerick/drawbridge "0.0.6"])。

我为 repl 添加了一个处理程序路由,如下所示(基于https://devcenter.heroku.com/articles/debugging-clojure):

并添加wrap-drawbridge到我的中间件中。

然后我使用启动服务器

lein ring server-headless

连接似乎运行良好,因为执行 GET 请求会http:localhost:3000/repl产生响应:["[\n","\n]"]

但我无法连接到 REPL:

而且,过了一段时间:

我错过了什么吗?

编辑:

将以下日志记录代码添加到我的处理程序:

按照建议连接时lein repl :connect http://localhost:3000/repl,我看到IN REPL在服务器控制台上以无限循环打印该行。

0 投票
3 回答
1048 浏览

emacs - Cider:评估 REPL 中的表格前一点

在 nREPL 中,用户可以简单地 Cx Ce 在运行的 REPL 中评估前面的形式。

但是,在 Cider 中,似乎只有一种方法可以评估回声区域或弹出缓冲区中的表单。

真的是这样吗?

请有人纠正我,因为这是一个有用的功能。

0 投票
1 回答
417 浏览

emacs - Clojure:是否有 Java 函数的文档,例如 Math/exp?

我希望(doc Math/exp)能给我一些东西,但它没有。当然它不是 Clojure 函数,但仍然应该有一些方法可以访问文档。

我能得到的最接近的东西是(javadoc Math). 我更喜欢该页面中的实际文档作为字符串:

UPD:反射签名

以下是我如何获得签名:

我希望有一种类似的方式来获取文档。

UPD:通过反射没有文档

根据问题如何通过反射阅读 Javadoc 注释?,不可能通过反射获得文档。我想知道是否可以重用一些确实可以访问文档的 Eclipse 代码。

0 投票
1 回答
422 浏览

clojure - Clojure Light Table 客户端-服务器方法之谜

如何设置它,以便我可以在 Mac 上使用 Light Table,连接到 Ubuntu 托管的 nREPL,并创建一个新的 program/project.clj?任何人都可以帮助我了解我的方法应该是什么,以及我哪里出错了?

我有一个在 VirtualBox 中的 Ubuntu 服务器,还有 Leiningen、Pedestal 和一个在浏览器中显示的基座“helloworld”示例程序。我只是无法连接到运行 helloworld 程序的同一个 REPL。我没有对服务器端对象的客户端访问或控制。

我想从我的 Mac 主机 LT 进行客户端-服务器 Clojure 开发,创建可以在 REPL 中查看的服务器端程序。

我发现 LT 在这方面并不直观,而且我读过的建议仅表明 LT 将连接到现有项目/REPL。我想从客户端创建新对象

0 投票
1 回答
535 浏览

clojure - 如何在远程 REPL 中编译命名空间

我在编译.clj驻留在运行 nREPL 服务器进程的项目中的文件时遇到问题:

  1. 我已经使用lein new xxx.
  2. 在项目文件夹中,我启动了一个 nREPL lein repl
  3. 在另一个终端窗口中,我启动了一个客户端lein repl :connect localhost:12345/repl
  4. 我创建了一个简单的命名空间文件并将其保存在项目中的适当位置:

    /li>
  5. 现在在客户端我调用了这个函数

    /li>

我有以下例外:

现在我本来希望编译调用在服务器而不是客户端上执行。可以做到吗?

谢谢

0 投票
4 回答
911 浏览

clojure - 使用 Lein 和 Ring 在 Clojure 中丢失 *out*

我正在运行 Lein 2 和苹果酒 0.7.0。我制作了一个使用 ring/run-jetty 启动的示例环应用程序。

然后用苹果酒连接到它,例如:

我可以在 emacs 中导航到我的站点和评估表单,它会更新我的 nrepl 会话中正在运行的内容,这很棒。

我看不到输出,无论是(print "test") (println "test") (trace "out" 1)

最后,我的项目文件:

我开始网站lein run

编辑 我可以看到输出,仅在使用时(.println System/out msg)

0 投票
3 回答
5850 浏览

clojure - 从另一个容器连接到在 Docker 容器中运行的无头 nREPL

我正在尝试从 Docker 容器连接到 nREPL,该容器在端口 7888 上运行另一个链接的 Docker 容器。尽管使用 暴露端口-p 7888,使用 Docker 注入的环境主机和端口变量链接容器-link <first_container_name>:repl,我得到了“连接被拒绝”。错误。

这是我运行第一个容器的方式:

第二个容器:

为什么我的连接被拒绝?我能够在 Docker 容器之间连接其他服务,例如 AMQP。

0 投票
1 回答
1436 浏览

emacs - Clojure - 连接问题重新运行 cider-jack-in

我最近开始在 Emacs 24 下使用 CIDER。我的工作流程包括通过 Tramp 访问远程服务器,然后执行cider-jack-in以在该服务器上运行连接到 Clojure 的nREPL服务器。如果我在新的 Emacs 实例中运行它,一切都很好。但是,如果由于某种原因连接断开或我使系统休眠,我将无法重新启动 REPL。我收到以下消息:

我怀疑这与连接端口仍被前一个实例阻止有关,特别是因为新的连接尝试在同一个端口号上。有没有一种简单的方法可以完全释放以前使用的端口和/或强制 CIDER 尝试使用不同的端口?也许您对使用 CIDER 进行远程工作有其他建议。非常感谢任何帮助。

0 投票
0 回答
190 浏览

testing - 带有 emacs、nREPL 和 clojure.test 的可导航 clojure 堆栈跟踪

我通过 cider 将 emacs 与 nREPL 一起使用,并且我有一套基于 clojure.test 的测试,我运行这些测试以查看我什么时候破坏了东西(这很多,因为我对 clojure 还很陌生。)我尝试了两种方法来运行这些测试——第一种是调用外部“lein test”命令,第二种是使用clojure-test——两种方法都可以,但都没有给出完全令人满意的结果。我想要的是能够“导航”测试结果,即单击故障和堆栈跟踪以找到故障源。

我已经对 clojure-stacktrace-mode 进行了一些研究,但是,虽然相当令人印象深刻,但这似乎只适用于在 nREPL 缓冲区中生成的堆栈跟踪。

所以我的问题是:有没有办法得到我想要的行为?或者也许是另一种获得等效功能的方法?我觉得所有部分都在那里,但是我将它们错误地组合在一起。