2024 年 Clojure 调查问卷中分享您的想法!

欢迎!请参阅关于页面,了解此功能的更多信息。

0
ClojureScript

使用 Leiningen & cljsbuild 编译,使用 ClojureScript 1.10.891,在 Windows 上时,编译失败,出现以下异常。

在相同的项目和源文件上以及先前的 ClojureScript 版本(例如 1.10.879)上不会发生这种情况,环境(即 Windows)相同。

这看起来似乎与函数 analyze-goog-file 的最近更改以及将资源转换为 file-paths(在 Windows 上)有关。

异常
clojure.lang.ExceptionInfo: 编译文件失败:target\cljsbuild-compiler-1\cljs\core.cljs {:file #object[java.io.File 0x57ac2910 "target\\cljsbuild-compiler-1\\cljs\\core.cljs"], :clojure.error/phase :compilation}

    at cljs.compiler$compile_file$fn__4031.invoke(compiler.cljc:1765)
    at cljs.compiler$compile_file.invokeStatic(compiler.cljc:1725)
    at cljs.compiler$compile_file.invoke(compiler.cljc:1701)
    at cljs.closure$compile_file.invokeStatic(closure.clj:660)
    at cljs.closure$compile_file.invoke(closure.clj:638)
    at cljs.closure$fn__5527.invokeStatic(closure.clj:734)
    at cljs.closure$fn__5527.invoke(closure.clj:728)
    at cljs.closure$fn__5440$G__5433__5447.invoke(closure.clj:556)
    at cljs.closure$compile_from_jar.invokeStatic(closure.clj:707)
    at cljs.closure$compile_from_jar.invoke(closure.clj:697)
    at cljs.closure$fn__5531.invokeStatic(closure.clj:744)
    at cljs.closure$fn__5531.invoke(closure.clj:728)
    at cljs.closure$fn__5440$G__5433__5447.invoke(closure.clj:556)
    at cljs.closure$compile_sources$iter__5653__5657$fn__5658.invoke(closure.clj:1105)
    at clojure.lang.LazySeq.sval(LazySeq.java:42)
    at clojure.lang.LazySeq.seq(LazySeq.java:51)
    at clojure.lang.RT.seq(RT.java:535)
    at clojure.core$seq__5419.invokeStatic(core.clj:139)
    at clojure.core$dorun.invokeStatic(core.clj:3121)
    at clojure.core$doall.invokeStatic(core.clj:3136)
    at clojure.core$doall.invoke(core.clj:3136)
    at cljs.closure$compile_sources.invokeStatic(closure.clj:1101)
    at cljs.closure$compile_sources.invoke(closure.clj:1090)
    at cljs.closure$build.invokeStatic(closure.clj:3195)
    at cljs.closure$build.invoke(closure.clj:3099)
    at cljs.build.api$build.invokeStatic(api.clj:231)
    at cljs.build.api$build.invoke(api.clj:212)
    at cljs.build.api$build.invokeStatic(api.clj:218)
    at cljs.build.api$build.invoke(api.clj:212)
    at cljsbuild.compiler$compile_cljs$fn__709.invoke(compiler.clj:61)
    at cljsbuild.compiler$compile_cljs.invokeStatic(compiler.clj:60)
    at cljsbuild.compiler$compile_cljs.invoke(compiler.clj:48)
    at cljsbuild.compiler$run_compiler.invokeStatic(compiler.clj:168)
    at cljsbuild.compiler$run_compiler.invoke(compiler.clj:129)
    at user$eval838$iter__886__890$fn__891$fn__917.invoke(form-init2485741331243889614.clj:1)
    at user$eval838$iter__886__890$fn__891.invoke(form-init2485741331243889614.clj:1)
    at clojure.lang.LazySeq.sval(LazySeq.java:42)
    at clojure.lang.LazySeq.seq(LazySeq.java:51)
    at clojure.lang.RT.seq(RT.java:535)
    at clojure.core$seq__5419.invokeStatic(core.clj:139)
    at clojure.core$dorun.invokeStatic(core.clj:3121)
    at clojure.core$doall.invokeStatic(core.clj:3136)
    at clojure.core$doall.invoke(core.clj:3136)
    at user$eval838.invokeStatic(form-init2485741331243889614.clj:1)
    at user$eval838.invoke(form-init2485741331243889614.clj:1)
    at clojure.lang.Compiler.eval(Compiler.java:7181)
    at clojure.lang.Compiler.eval(Compiler.java:7171)
    at clojure.lang.Compiler.load(Compiler.java:7640)
    at clojure.lang.Compiler.loadFile(Compiler.java:7578)
    at clojure.main$load_script.invokeStatic(main.clj:475)
    at clojure.main$init_opt.invokeStatic(main.clj:477)
    at clojure.main$init_opt.invoke(main.clj:477)
    at clojure.main$initialize.invokeStatic(main.clj:508)
    at clojure.main$null_opt.invokeStatic(main.clj:542)
    at clojure.main$null_opt.invoke(main.clj:539)
    at clojure.main$main.invokeStatic(main.clj:664)
    at clojure.main$main.doInvoke(main.clj:616)
    at clojure.lang.RestFn.applyTo(RestFn.java:137)
    at clojure.lang.Var.applyTo(Var.java:705)
    at clojure.main.main(main.java:40)

原因是:clojure.lang.ExceptionInfo: nil #:clojure.error{:source nil, :line nil, :column nil, :phase :compilation}

    at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:4269)
    at cljs.analyzer$analyze.invoke(analyzer.cljc:4255)
    at cljs.analyzer$analyze_file$fn__3008.invoke(analyzer.cljc:4773)
    at cljs.analyzer$analyze_file.invokeStatic(analyzer.cljc:4768)
    at cljs.analyzer$analyze_file.invoke(analyzer.cljc:4726)
    at cljs.analyzer$analyze_file.invokeStatic(analyzer.cljc:4740)
    at cljs.analyzer$analyze_file.invoke(analyzer.cljc:4726)
    at cljs.compiler$with_core_cljs.invokeStatic(compiler.cljc:1473)
    at cljs.compiler$with_core_cljs.invoke(compiler.cljc:1463)
    at cljs.compiler$compile_file_STAR_.invokeStatic(compiler.cljc:1652)
    at cljs.compiler$compile_file_STAR_.invoke(compiler.cljc:1645)
    at cljs.compiler$compile_file$fn__4031.invoke(compiler.cljc:1750)
    ... 59 more

原因是:clojure.lang.ExceptionInfo: 在索引 4 处的字符 <:> 不合法:file:\C:\Users\n.m2\repository\org\clojure\google-closure-library\0.0-20210811-6da97fe1\google-closure-library-0.0-20210811-6da97fe1.jar!\goog\math\long.js,在文件 file:/C:/Users/n/.m2/repository/org/clojure/clojurescript/1.10.891/clojurescript-1.10.891.jar!/cljs/core.cljs {:tag :cljs/analysis-error}

    at cljs.analyzer$error.invokeStatic(analyzer.cljc:719)
    at cljs.analyzer$error.invoke(analyzer.cljc:715)
    ... 71 more

原因是:java.nio.file.InvalidPathException: 在索引 4 处的字符 <:> 不合法:file:\C:\Users\n.m2\repository\org\clojure\google-closure-library\0.0-20210811-6da97fe1\google-closure-library-0.0-20210811-6da97fe1.jar!\goog\math\long.js

    at sun.nio.fs.WindowsPathParser.normalize(WindowsPathParser.java:182)
    at sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:153)
    at sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:77)
    at sun.nio.fs.WindowsPath.parse(WindowsPath.java:94)
    at sun.nio.fs.WindowsFileSystem.getPath(WindowsFileSystem.java:255)
    at java.io.File.toPath(File.java:2271)
    at cljs.externs$resource__GT_source_file.invokeStatic(externs.clj:293)
    at cljs.externs$resource__GT_source_file.invoke(externs.clj:290)
    at cljs.externs$analyze_goog_file.invokeStatic(externs.clj:307)
    at cljs.externs$analyze_goog_file.invoke(externs.clj:297)
    at cljs.analyzer$analyze_deps.invokeStatic(analyzer.cljc:2640)
    at cljs.analyzer$analyze_deps.invoke(analyzer.cljc:2612)
    at cljs.analyzer$ns_side_effects.invokeStatic(analyzer.cljc:4131)
    at cljs.analyzer$ns_side_effects.invoke(analyzer.cljc:4126)
    at cljs.analyzer$analyze_STAR_$fn__2886.invoke(analyzer.cljc:4253)
    at clojure.lang.PersistentVector.reduce(PersistentVector.java:343)
    at clojure.core$reduce.invokeStatic(core.clj:6829)
    at clojure.core$reduce.invoke(core.clj:6812)
    at cljs.analyzer$analyze_STAR_.invokeStatic(analyzer.cljc:4253)
    at cljs.analyzer$analyze_STAR_.invoke(analyzer.cljc:4244)
    at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:4272)
    ... 70 more

1 答案

0

感谢您的报告 - 已在此修复 https://github.com/clojure/clojurescript/commit/79aef5056e6e45bcc21bdd5fd2075979a5ca33ac,并添加了 Windows 测试运行器以避免此类简单问题。

...