ChatGPT解决这个技术问题 Extra ChatGPT

如何使 nrepl-ritz-jack-in 通过 TRAMP / Emacs 远程工作

我想要的是:

我在远程站点上有一个 clojure 程序,我们称之为 mccarthy。我想做的是从我的笔记本电脑连接到 nrepl-ritz,最好使用 nrepl-ritz-jack-in。插孔适用于本地程序,但似乎无法连接到远程程序。

尝试 1

/mccarthy:code/program/project.clj 上的 Cx Cf

(require 'nrepl-ritz)

Mx nrepl-ritz-jack-in

结果

Emacs 似乎挂起。如果我转到 *nrepl-server* 缓冲区,我会看到:

Exception in thread "main" java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.flatland.drip.Main.invoke(Main.java:117)
    at org.flatland.drip.Main.start(Main.java:88)
    at org.flatland.drip.Main.main(Main.java:64)
Caused by: java.lang.AssertionError: Assert failed: project
    at leiningen.ritz_nrepl$start_jpda_server.invoke(ritz_nrepl.clj:23)
    at leiningen.ritz_nrepl$ritz_nrepl.doInvoke(ritz_nrepl.clj:95)

(还有很多其他的线路......)

我在我的笔记本电脑上使用 drip,但不在 mccarthy 上,所以很明显 nrepl-ritz-jack-in 没有检测到它是一个远程文件。但是,在这种情况下,常规的旧 nrepl-jack-in 将按预期工作。

尝试 2

我还尝试在 mccarthy 上使用 lein 启动 nrepl-ritz

mattox@mccarthy$ lein ritz-nrepl
nREPL server started on port 42874

从我的笔记本电脑转发一个端口,以便本地 42874 连接到 mccarthy 上的 42874

ssh -L 42874:localhost:42874 -N mccarthy

然后,从我本地的 Emacs 中:

(require 'nrepl-ritz)

Mx nrepl

主机:127.0.0.1

端口:42874

这给了我一个联系:

; nREPL 0.1.7-preview
user> 

所以为了测试它,我运行

Mx nrepl-ritz-threads

它给了我一个很好的线程表。

Mx nrepl-ritz-break-on-exception

user> (/ 1 0)

结果

这会挂起,但有时会显示一个隐藏的调试缓冲区,其中有一些可用的重新启动。如果我告诉它将异常传递回程序,它永远不会将控制权交还给 REPL。

我已经进行了大量搜索,但找不到比“确保 lein 在您的路径上”更具体的内容(我确实在两台机器上都这样做了......)。

(/ 1 0) - 这挂起?可能试图评估无穷大...... ;-)
在您的本地机器上尝试 Attempt 2,它工作正常吗?那是从 lein ritz-repl 开始,然后从 emacs 连接
是的,从我的本地机器开始工作正常。只是远程连接有问题。
如果您按照以下步骤操作,它应该可以工作:devcenter.heroku.com/articles/debugging-clojure
已经回复了老哥。 stackoverflow.com/questions/22908315/… 这不是您想要的,但它会有所帮助

C
Community

如果 repl 仍在从前一个 cider-jack-in 运行,您应该使用 cider 命令连接到正在运行的实例,或者在启动新实例之前停止前一个

从这里`Clojure - connection issue re-running cider-jack-in

另请参阅此https://devcenter.heroku.com/articles/debugging-clojure


关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅