gpt4 book ai didi

node.js - 如何将 ClojureScript Node REPL 连接到我的 :node-library shadow-cljs project?

转载 作者:行者123 更新时间:2023-12-03 12:12:16 25 4
gpt4 key购买 nike

语境

我正在使用 ClojureScript 和 shadow-cljs 构建一个 Node.js 库.
所有开发都是使用 ClojureScript 完成的,但构建工件是一个 NPM 包。例子:

(ns com.example.answer)

(defn answer [] 42)

构建...发布...然后
const answer = require('answer');
answer(); //=> 42

注意:我最近将我的build设置的详细信息贡献给了 this post .

我的整个开发环境都在一个 Docker 容器中,我使用的是“Visual Studio Code Remote - Container”扩展。
  • ClojureScript v1.10
  • Node.js v12
  • shadow-cljs v2.8.55
  • Visual Studio 代码 Calva扩展(在 VS Code remote container 中运行)

  • “问题”

    我的build设置工作正常(至少我认为是这样!)但我想实现更快的开发反馈周期。
    换句话说:我不想为了测试几行更改而重建整个 NPM 包。

    完美世界又名“问题”

    在一个完美的世界中,我应该能够打开 REPL 并能够始终评估我的 ClojureScript 代码。

    无论我如何尝试到达那里,我似乎都被相同的潜在问题所阻止:

    No application has connected to the REPL server. Make sure your JS environment has loaded your compiled ClojureScript code.



    我试过的
  • shadow-cljs只要:

    鉴于以下 shadow-cljs.edn文件:

    ;; shadow-cljs configuration
    {:source-paths
    ["src"]

    :builds
    {:lib {:target :node-library
    :output-to "dist/index.js"
    :exports {:citation citegen.processor.main/citation}}}}

    第一次观看:
    root@97db64e5dfa3:/workspaces/citegen# cd packages/csl-processor/
    root@97db64e5dfa3:/workspaces/citegen/packages/csl-processor# yarn shadow-cljs cljs-repl lib
    yarn run v1.17.3
    $ /workspaces/citegen/node_modules/.bin/shadow-cljs cljs-repl lib
    shadow-cljs - config: /workspaces/citegen/packages/csl-processor/shadow-cljs.edn cli version: 2.8.52 node: v12.10.0
    shadow-cljs - socket connect failed, server process dead?
    shadow-cljs - updating dependencies
    ...
    shadow-cljs - dependencies updated
    shadow-cljs - server version: 2.8.52 running at http://localhost:9630
    shadow-cljs - nREPL server started on port 36017
    [0:0]~cljs.user=>

    然后在另一个终端:(注意错误信息)
    root@97db64e5dfa3:/workspaces/citegen# cd packages/csl-processor/
    root@97db64e5dfa3:/workspaces/citegen/packages/csl-processor# yarn shadow-cljs cljs-repl lib
    yarn run v1.17.3
    $ /workspaces/citegen/node_modules/.bin/shadow-cljs cljs-repl lib
    shadow-cljs - config: /workspaces/citegen/packages/csl-processor/shadow-cljs.edn cli version: 2.8.52 node: v12.10.0
    shadow-cljs - connected to server
    [1:1]~cljs.user=> (inc 41)
    No application has connected to the REPL server. Make sure your JS environment has loaded your compiled ClojureScript code.
  • 使用 VS 代码 Calva :

    鉴于相同 shadow-cljs.edn文件如上:

    enter image description here

    当我尝试使用 Calva: Load current namespace in REPL window 手动加载命名空间时, 我犯了同样的错误:

    No application has connected to the REPL server. Make sure your JS environment has loaded your compiled ClojureScript code.


  • 问题:我如何到达那个完美的世界?

    最佳答案

    多亏了 Thomas Heller,我才设法让它发挥作用。

    我没有意识到我需要运行一次构建工件才能连接到 REPL。

    这将有效地摆脱这个错误:

    No application has connected to the REPL server. Make sure your JS environment has loaded your compiled ClojureScript code.



    步骤
  • 在 VS Code 中打开任何 ClojureScript 文件
  • 按 CMDSHIFTp 并选择 Calva: Start a project REPL and connect (aka Jack-in)
  • 等到 REPL 窗口打开
  • 只有这样,打开一个新终端并需要您的构建工件,以便连接到 REPL。例如node -e "require('./dist')"
  • 打开任何要在 REPL 中评估的 ClojureScript 文件,按 CMDSHIFTp 并选择 Calva: Load current namespace in the REPL window

  • 我在下面附上了一个截屏视频。如你看到的:
  • CLJS REPL 窗口中的命名空间未设置为 undefined
  • 对 ClojureScript 文件的任何更改都会自动重新编译并在 REPL 中可用

  • enter image description here

    关于node.js - 如何将 ClojureScript Node REPL 连接到我的 :node-library shadow-cljs project?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58060822/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com