请在Clojure 2024状态调查中分享您的想法!

欢迎!请参阅关于页面获取更多关于该如何运作的信息。

0
ClojureScript
已关闭

大家好

我尝试按照"ClojureScript快速入门"的指示在Windows 10上操作。我尝试了
在WSL中使用Ubuntu方式和在powershell方式。然而,两个都失败了。Ubuntu失败时

clj -M --main cljs.main --compile hello-world.core --repl
无法启动浏览器

未设置X11 DISPLAY变量,但该程序执行了一个需要它的操作。
您可以启动一个非浏览器REPL(Node或Nashorn)。
您可以使用此REPL选项禁用自动浏览器启动
:launch-browser false
并且您可以使用此REPL选项指定监听IP地址
:host "127.0.0.1"
等待浏览器连接到https://127.0.0.1:9000 ...
ClojureScript 1.10.758
cljs.user=>

--->>> 那我怎样才能用网页打开浏览器?REPL可以输入,但没有响应。(例如:(+ 1 2)完全没有任何反馈)

使用powershell方式失败

java -cp " cljs.jar;src" cljs.main --compile hello-world.core --repl
ClojureScript 1.10.758
cljs.user=>

--->>> 它就那样挂在那里,无法输入任何内容。localhost:9000会打开,但只是滚动/等待,控制台也没看到"Hello World!"

有没有什么方法可以让我在Windows 10上启动ClojureScript?Docker方式、Docker在WSL中的方式?任何可行的方式,请。谢谢!

附带说明关闭:已解决

4个答案

+1

如果您已安装 node.js,您可以尝试 shadow-cljs。我是作者,也使用Windows,所以我确定它可行。 ;)

尝试

npx create-cljs-project foo
cd foo
npx shadow-cljs browser-repl
# or
npx shadow-cljs node-repl

您可以直接在Windows上运行此代码或通过WSL运行。当使用WSL时,可能会收到浏览器无法自动打开的警告。在这种情况下,只需将URL复制并手动在您的浏览器中打开它。

Failed to open Browser automatically.
Please open the URL below in your Browser:
        https://127.0.0.1:9630/repl-js/browser-repl
嗨,我已经尝试了您的步骤,出现了以下情况

本站无法提供安全的连接localhost发送了无效的响应。
ERR_SSL_PROTOCOL_ERROR

(即使我将其从https改为http)
开发者工具控制台显示

crbug/1173575,非JS模块文件已弃用。

原始命令窗口显示
.....

shadow-cljs - 服务器版本:2.13.0,运行在https://127.0.0.1:9630
shadow-cljs - nREPL 服务器在端口13545上启动
[:browser-repl] 配置构建。
[:browser-repl] 编译...
[:browser-repl] 构建完成。 (119个文件,0已编译,0警告,6.38秒)
cljs.user=> (+ 3 2)           <<-- 我后来输入的
没有可用的JS运行时。
https://shadow-cljs.github.io/docs/UsersGuide.html#repl-troubleshootingcljs.user=>
(匿名) @ (index):5551
不要使用https,默认服务器只使用http。

您获得的“没有可用的JS运行时”错误是因为浏览器未连接。如果您只想使用REPL,可以使用node-repl。

对于浏览器而言,您只需将其作为普通网页打开即可。我不知道为什么它无法打开。这是哪个浏览器?crbug的事情表明是Chrome,但错误看起来是从开发者工具本身发出的,因此它与您打开的页面无关?
0

我刚刚重新访问了cljs dev。我几年前开始使用figwheel,然后升级到了figwheel-main。README和相关教程https://github.com/bhauman/figwheel-main在讨论ClojureScript底层操作方面非常好。它们为CLI和leiningen(我通常使用的)提供了路径。在过去的一周左右,我一直在W10上使用emacs连接到浏览器REPL开发了一个相当复杂的 cljs SPA。

0

嗨,感谢大家尝试帮助。我试了figwheel和reagent,我想这应该是一个更简单的方法。然而,我还是失败了。我的步骤是

lein new figwheel hello-world -- --reagent
然后
cd hello-world
npm install
lein figwheel

这应该可以工作,看起来也可以(没有错误)。然而,我的网页
neither
http://0.0.0.0:3449/
nor
https://127.0.0.1:3449/
不起作用,网页为空,并显示

This site can’t be reachedThe webpage at http://0.0.0.0:3449/ might be temporarily down or it may have moved permanently to a new web address.
ERR_ADDRESS_INVALID

开发者工具控制台显示
crbug/1173575,非JS模块文件已弃用。
(anonymous) @ VM1234:5551

我在Windows 10上尝试了上述方法。然而,我也在WSL(Ubuntu)上尝试了。行为相同。我已经关闭了所有防火墙,没有阻止任何东西。也没有安装任何杀毒软件。我真的不明白这个简单的功能为什么就是工作不了。

有点线索吗?

0

感谢大家!我终于自己搞明白了。我尝试了一些其他Web框架。最后我发现我需要使用显式的IP(例如:192.168.....或172.....),而不是0.0.0.0或localhost或127.0.0.1。我发现问题是出在Vue.js上,所以我猜ClojureScript可能也存在同样的问题。果然是这么回事!

感谢大家尝试帮助。你们都是好人。希望我们今后还能互相帮助。谢谢!

...