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

欢迎!请查看 关于 页面以了解更多此功能的信息。

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

相关:CLJS-1402, CLJS-1901

15 个答案

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

特别是它失败在Windows下。

这是失败的一个示例

在(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是一个更好的前进方式。我相信混合斜杠可以正常工作,因为浏览器具有容错性,会将反斜杠视为正斜杠处理源映射 resolve。此更改可能会非常小地破坏现有的代码,这取决于 clojurescript 生成带反斜杠的 sourcesUrl 的具体方式,直到现在。

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

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