请在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开发者工具在树视图中没有显示它们。

其中一个的内容是


  {"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应用到当前的master分支。它已经干净地应用,没有冲突。在我的机器上,测试仍然通过。

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中失败( Circle Cross)

特别是Windows下的失败

这里是失败的一个例子

在 (test-external-source-maps) (source_maps_tests.clj:79) 失败 (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. 新使用仅前面斜杠,保持我的测试不变,并在下一个版本中将其宣布为可能破坏性的更改

我觉得方案2是更好的前进方式。我相信混合的斜杠可以工作,因为浏览器很宽容,将反斜杠在源映射解析中视为前面斜杠。这种改变会有一点点可能性破坏现有的代码,这取决于clojurescript到目前为止生成具有反斜杠的 sourceMappingURL 的特定方式。

我将把它留给你考虑。然后我会根据你的决定继续前进。

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