【问题标题】:Cannot start a remote ClojureScript bREPL (it says "Unable to resolve symbol...")无法启动远程 ClojureScript bREPL(它显示“无法解析符号...”)
【发布时间】:2016-02-07 01:12:56
【问题描述】:

这里是 ClojureScript 新手。

我正在学习使用 Boot 的以下 ClojureScript 教程:https://github.com/magomimmo/modern-cljs/blob/master/doc/second-edition/tutorial-02.md#browser-repl-brepl

我可以通过运行boot repl -c(start-repl) 将命令行/引导 repl 连接到我的站点,但我想使用基于 REPL 的更丰富的文本编辑器连接到站点。

我已经为 atom 文本编辑器下载了 ProtoRepl。我可以通过给它 repl 的主机 + 端口来很好地连接到 repl,但是当我尝试运行 (start-repl) 时它会抛出错误:

(start-repl)
=> CompilerException java.lang.RuntimeException: Unable to resolve symbol: start-repl in this context, compiling:(C:\Users\Zain\AppData\Local\Temp\boot.user4327288409706217009.clj:1:1)

似乎我缺少一些 ClojureScript/boot 特定的导入,但我不确定要添加什么或如何添加它。

这里有一些额外的调试信息:

在工作启动 repl 连接上运行 (def start-repl) 与失败的 proto-repl 连接:

引导复制:

cljs.user=> (def start-repl)
#'cljs.user/start-repl

原型复制:

(def start-repl)
=>
#'user/start-repl

【问题讨论】:

  • 如果您已经在 cljs repl 中,为什么还需要更多内容?
  • @nha 因为 Boot repl 是基于控制台的,错过了一些不错的功能,比如基于语法的颜色编码

标签: clojure clojurescript boot-clj proto-repl


【解决方案1】:

start-repl 命令由 adzerk boot-cljs-repl 库提供。如果您在 cljs.user 命名空间中,则命令将是:

(adzerk.boot-cljs-repl/start-repl)

如果这是您第一次输入 bREPL,Proto-REPL 会在每次击键时抛出错误。这是 Proto-REPL 尝试验证/自动完成您的 clojure 表达式但失败。摆脱这些错误的最快方法是禁用自动完成功能:

  1. 转到 Atom 的首选项
  2. 点击“包”
  3. 在“Installed Packages”下搜索“proto-repl”
  4. 点击“proto-repl”框下的“设置”
  5. 向下滚动到“启用自动完成”设置并取消选中复选框
  6. 重启 Atom

完成重新启动 Brepl 的步骤,你应该有一个正常工作的浏览器 repl。

【讨论】:

  • 欢迎您,感谢您的回答 :) 我知道这只是一行,但是将该命令放入格式化的代码块中可能值得费心。这提高了......好吧,与其说可读性不如“可扫描性”,但这也很好。
【解决方案2】:

从教程看来,start-repl 函数位于 boot.user 命名空间中。 Proto REPL 默认使用用户命名空间。试试(boot.user/start-repl)

【讨论】:

    猜你喜欢
    • 2015-10-19
    • 1970-01-01
    • 2018-11-11
    • 2014-04-28
    • 2017-12-12
    • 1970-01-01
    • 1970-01-01
    • 2016-12-31
    • 2017-04-16
    相关资源
    最近更新 更多