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}}正确进行调试。我们这边看到的问题是检测到了source maps,但不知何故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扩展时,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中失败(x)

尤其是在Windows下失败。

以下是失败的一个实例

在(test-external-source-maps)中失败(source_maps_tests.clj:79) 1103source maps with :source-map-asset-path under :none优化 1104期望:(检查文件 (构建结果 out "main.js") ["sourceMappingURL=https://127.0.0.1:1234/some/path/source_maps/main.js.map" (! "rel=")]) 1105实际:(not (检查文件 "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 如下所示(注意混合斜杠)

instantaneous-source-url=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
by
...