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 制作

已附上补丁文件。

已将Diff文件[https://github.com/darwin/clojurescript/compare/inline-source-maps~4...darwin:inline-source-maps.diff](https://github.com/darwin/clojurescript/compare/inline-source-maps~4...darwin:inline-source-maps.diff)应用到当前主分支。应用成功且无冲突。在我的机器上测试通过。

0 投票

评论者:mfikes

补丁不再适用,需要重新基准化。

0 投票

评论由:darwin 制作

在开发Chrome扩展新版本时,源映射再次损坏(链接:1)。可能是由于Chrome添加了一些安全限制,限制Chrome DevTools可以“看到的内容”。

网络上有些人声称内联源映射是一个可能的解决方案
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下失败。

这里有一个失败的实例

在测试-external-source-maps失败(source_maps_tests.clj:79) 1103源映射在:source-map-asset-path下有:none优化 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构建版本,失败的测试中的 sourceMappingURL 如下(注意斜线混淆)

//# sourceMappingURL=https://127.0.0.1:1234/some/path\source_maps\main.js.map

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

我想我们有两种可能的解决方案
1. 保留现有的行为,让我的测试接受混合斜线
2. 新地仅使用正斜线,保持我的测试不变,并在下次发布中宣布这是一个潜在的破坏性更改

在我看来,第二种解决方案是更好的前进方式。我相信混合斜线可以正常工作,因为浏览器是宽容的,并将反斜杠视为正斜线来解析源映射。这种更改可能会导致极小概率破坏现有的代码,这取决于 ClojureScript迄今为止如何使用带反斜杠的源映射进行生成的方式。

我将把它留给您考虑。然后按照您的决定继续前进。

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