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

在开发者工具中测试过,效果出色。

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应用到当前主分支。它应用顺利,没有冲突。在我机器上测试仍通过。

0

评论者:mfikes

补丁不再适用;需要重新基准测试。

0

评论者:darwin

在开发 Chrome 扩展时,source-maps 再次损坏了(链接:1)。可能是由于 Chrome 在什么情况下允许 Chrome DevTools "看到" 的一些增加的安全限制。

网络上的一些人声称内联 source-maps 是一个可能的解决方案
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) 失败 1103source maps with :source-map-asset-path under :none optimizations 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是更好的前进方式。我相信混合斜杠可以工作,因为浏览器很宽容,会将反斜杠视为前斜杠来解析 source mapping。这种变化可能会导致一小部分现有代码出现问题,这些问题将取决于 clojurescript 到目前为止生成 sourceMappingURL 时使用反斜杠的具体方式。

我将把这个留给您来考虑。然后根据您的决定继续前进。

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