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

新的审核链接: 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之外链接补丁是不恰当的。请直接为此票据添加单个squashed补丁。

0

评论由:darwin 发布

作为补丁文件附加。

我已经将该补丁应用到当前的主码上,它无缝应用且无冲突。在我的机器上,测试仍然通过。

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下失败。

以下是一个失败实例

在(test-external-source-maps)(source_maps_tests.clj:79)失败 1103source maps具有现有路径 sous :none优化 1104expected: (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构建,而slashes in failed tests is like this (note mixed slashes)

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