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应用到当前的master分支上。应用过程中没有出现冲突。我的机器上的测试仍在通过。

0

评论者:mfikes

补丁不再适用;需要重新建立基准。

0

评论者:darwin

在开发chrome扩展时,源映射再次损坏(链接:1)。可能是因为Chrome在允许Chrome开发者工具“看到”的内容上增加了某些安全限制。

网上有些人声称内联源映射是一个可能的解决方案
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) 1103具有:source-map-asset-path的源映射在:none优化下 1104预期:(检查文件(构建结果输出“main.js”)[“sourceMappingURL = https://127.0.0.1:1234/some/path/source_maps/main.js.map”(“rel”不在其中)]) 1105 实际:(非(检查文件“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. 新使用仅斜杠,保留我的测试,并在下一个版本中将此宣布为潜在的破坏性更改

在我看来,第二种方案是更好的前进方式。我相信混合斜杠可以正常工作,因为浏览器对反斜杠宽容,并在源映射解析中将其视为斜杠。这个更改可能会以非常小的可能性破坏现有的代码,具体的取决于clojurescript如何生成带反斜杠的sourceMappingURL直到现在的方式。

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

0
...