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

欢迎!请查看关于页面以获取更多关于如何使用本服务的信息。

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

相关:CLJS-1402,CLJS-1901

个答案

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

在开发者工具中测试,工作得非常好。

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测试中失败(×)

特别是它在Windows下失败。

以下是一个失败的实例

FAIL 在 (test-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. 新使用纯斜杠,保持我的测试不变,并在下一个版本中将此变更作为可能破坏性的变更来公告

在我看来,方案2是更好的前进方向。我相信混合斜杠可以工作,因为浏览器很宽容,会在源映射解析中将反斜杠视为斜杠。这个更改有极小可能破坏现有的代码,这取决于之前 clojurescript 如何使用反斜杠生成 sourceMappingURL。

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

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