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

欢迎!请查看 关于 页面以获取更多关于此功能的信息。

0
ClojureScript
  1. 重构 emit-source-map 并将其分解为多个函数
  2. 修复相对路径计算的逻辑(见 strip-prefix-path
  3. 添加对 :inline-source-maps 选项的支持
  4. 添加测试

相关:CLJS-1402, CLJS-1901

15 个回答

0

评论由:darwin

完整审核: https://github.com/clojure/clojurescript/compare/darwin:inline-source-maps~3...darwin:inline-source-maps

请注意,第一个补丁测试原始功能在一个测试中失败,因为在 :source-map-url 情况下的时间戳格式化存在错误。
https://github.com/clojure/clojurescript/compare/master...darwin:inline-source-maps#diff-55b85385d2d0bfb6dc20d59ed982d5c8L1239

0

评论由:darwin

今天在测试 Dirac 时,我发现我们还需要嵌入源代码内容。

附加补丁
https://github.com/darwin/clojurescript/commit/c1df38f14a33d02fe2d421f80db0b421b17286bb.patch

新的审核URL: https://github.com/darwin/clojurescript/compare/inline-source-maps~4...darwin:inline-source-maps

在DevTools中测试并通过。

0

评论者:skrat

这对我们来说同样有帮助。

0
评论者:arichiardi_

我也通过这篇教程[这篇教程|https://yogthos.net/posts/2016-12-26-MacchiatoDebugging.html]遇到了同样的问题。

如果没有这个补丁或[Dirac的复杂设置|https://github.com/binaryage/dirac-sample/blob/06321f53a34db73c1e9165c2b355e6e20b65ed14/project.clj#L86],就无法使用 {{node --inspect}} 正确调试。在我们这边看到的问题是源映射已被检测,但出于某种原因,Chrome DevTools 在树视图中没有显示它们。

其中之一的内容是


  {"version":3,"file":"\/Users\/user\/cqrs-engine-cljs\/out\/cqrs\/event_store.js","sources":["event_store.cljs"], ...



0

评论者:dnolen

在JIRA之外链接补丁不是合适的做法。请直接将单个压缩补丁添加到这个问题中。

0

评论由:darwin

已将其作为补丁文件附加。

https://github.com/darwin/clojurescript/compare/inline-source-maps~4...darwin:inline-source-maps.diff 应用于当前主分支。它干净地应用了,没有冲突。在我的机器上测试仍然通过。

0

评论者:mfikes

该补丁不再适用;需要重新基准。

0

评论由:darwin

在开发Chrome扩展程序时,源映射文件(source-maps)又损坏了(链接:1)。这可能是因为Chrome为其扩展程序开发工具可“查看”的内容添加了一些安全限制。

网络上有一些人声称内嵌源映射是一个可能的解决方案。
https://stackoverflow.com/a/54761431/84283

(链接:1) https://bugs.chromium.org/p/chromium/issues/detail?id=931675

0

评论者:dnolen

只是想提一下,我对提出的内容没有异议。请重新确定补丁的基准,我将在近期内进行审查。

0

评论由:darwin

谢谢。我将在本周尝试查看这个问题。

0

评论由:darwin

0

评论者:mfikes

CLJS-1902-2.patch在CI环境中失败(x)

特别是在Windows环境下。

以下是失败的一个实例。

在(test-external-source-maps)(source_maps_tests.clj:79)中失败 1103在:none优化下预期source maps具有:source-map-asset-path 1104预期:(check-file (build-result out "main.js") ["sourceMappingURL=https://127.0.0.1:1234/some/path/source_maps/main.js.map" (! "rel=")]) 1105实际:(not (check-file "C:\\Users\\appveyor\\AppData\\Local\\Temp\\1\\cljs-tests-source-maps-build\\source-maps-onone-source-map-asset-path\\source_maps\\main.js" ["sourceMappingURL=https://127.0.0.1:1234/some/path/source_maps/main.js.map" #object[cljs.source_maps_tests.NegativeCheck 0x38c5d3ae "negative check for 'rel=' (class java.lang.String)]"])))

CI失败日志以及其他实例:https://ci.appveyor.com/project/mfikes/clojurescript/builds/24471651

0

评论由:darwin

我查看了Windows构建的情况,失败测试中的 svěřovací URL wygląda tak (poz注意混合斜杠)

***/

问题出在现有代码中使用 {{util/path}} 的地方,这是与操作系统有关的,在Windows下产生反斜杠,我的补丁没有修改这部分代码分支。
https://github.com/clojure/clojurescript/blob/47386d7c03e6fc36dc4f0145bd62377802ac1c02/src/main/clojure/cljs/compiler.cljc#L1473

我认为我们有两种可能的解决方案
1. 保留现有的行为不变,让我的测试接受混合的斜杠
2. 新使用仅使用正斜杠,让我的测试保持原样,并在下一个版本中将它宣布为可能破坏性的变更

我认为解决方案2是一个更好的发展方向。我相信混合的斜杠可以工作,因为浏览器是宽容的,并将在源映射解析中将反斜杠视为正斜杠。这种改变可能会破坏一些现有的代码,这取决于 clojurescript 到现在为止生成 sourceMappingURL 时具体使用反斜杠的方式。

我把它留给你考虑。然后继续执行你的决定。

0
参考: https://clojure.atlassian.net/browse/CLJS-1902 (由darwin报告)
...