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扩展时,源映射再次损坏(链接: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)

特别是它在不带网络的情况下失败。

以下是失败的实例之一

在(test-external-source-maps)测试中失败(source_maps_tests.clj:79) 1103在:none优化下使用 :source-map-asset-path 的源映射 1104预期的:检查文件(build-result out "main.js")[“sourceMappingURL=https://127.0.0.1:1234/some/path/source_maps/main.js.map” (! "rel=")] 1105实际:not (检查文件 "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”(! “rel=”)] )

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

0 投票

评论由:darwin 提出

我查看了那个Windows构建和源映射中失败测试的UIntegerName looks like this (注意混合斜杠)

//# 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 报告)
...