在开发Clojure时,使用npm运行开发环境是否与Emacs Cider不兼容



我是Clojure的新手,不是Javascript的专业人员。我正在观看关于Reagent的免费课程。

按照课程回购的说明,在完成git clonenpm install之后,作者指示运行$ npm run dev。一切都很好。我可以在我的http://localhost:3000/上看到这个应用程序。

由于我是Emacs的重度用户,我决定启动Cider,这是一个Emacs包,使Emacs成为Clojure的IDE。因此,我将使用REPL进行交互式编程。

在Emacscider-jack-in中执行后,返回一个错误。Emacs表示:

进程sentinel中的错误:无法启动nREPL服务器:shadow-cljs-config:/home/pedro/projects/learn-agent课程文件/giggin/shadow-cljs.ednshadow cljs-已连接到服务器服务器已经在运行

虽然不可能在npm run dev之后执行cider-jack-in,但可以成功使用cider-jack-in。要做到这一点,我只需要退出所有内容,而不需要处理npm,只需在repo上执行cider-jack-in即可。

为什么会发生这种情况?Emacs苹果酒与npm run dev不兼容吗?与已经运行的服务器不兼容?

关于错误消息内容,Cider、npm进程和shadow cljs之间有什么关系?

我不能评论任何Cider/Emacs特定的东西,因为我自己不使用它。然而,我可以尝试澄清正在做的事情:

npm run dev只是运行npx shadow-cljs watch app(参见package.json"scripts"(。它只是一个别名,使它变短了一点。因此,它启动shadowcljs并开始app构建编译,并不断关注更改。

另一方面,我相信cider-jack-in也启动了一个全新的JVM,它将完全独立,并且不知道或连接到通过npm run dev启动的影子cljs进程。

可以只使用从cider-jack-in获得的REPL中的shadow-cljs,但我不知道cider-jack-in可能已经为您做了什么。也许REPL使用方面的文档可以提供一些帮助?

您也可以跳过cider-jack-in,让Cider连接到由npm run dev启动的shadow-cljs实例。我相信命令是cider-connect

最新更新