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

欢迎!有关如何使用本站信息,请参阅关于页面。

+6
ClojureScript

如果有一种方法可以使source maps与react native和shadow-cljs一起工作,这将非常有用于调试。目前有一个问题与打包器相关,阻止提供额外的source maps,因此不能直接实现,需要一些特定的解决方案。

https://github.com/facebook/metro/issues/104

使用react native与figwheel可以绕过这个问题;我想知道是否可以使用shadow-cljs来使source maps正常工作——也许可以通过自行合并source maps来实现。

我注意到有几款用于合并source maps的软件包,例如sorcery https://npmjs.net.cn/package/sorcery和merge-source-maps https://npmjs.net.cn/package/merge-source-maps,但我不确定如何将这些软件包集成到打包器中。

1 答案

+2

被选中
 
最佳答案

我的理解是,只有在启用“在 Chrome 中调试”选项并实际在 Chrome 中加载 JS 代码时,源映射才会生效。否则,我在某个地方遗漏了一些重要的内容,因为由 metro 处理的源代码 Definitely 不支持合并源映射。

在未来几周,我将在 react-native 支持方面开展工作,届时我将进一步研究这个问题。

by
是的,只有当“启用 Chrome 的调试”时,源映射才会生效——然而这对于开发已经足够有用。如果在出错时打开“捕获异常时暂停”,调试器将中断,并且您将被带到导致错误的行。在图轮的开发模式下,这将以某种方式映射回 clojurescript 文件(可能是因为打包器被绕过了)。
by
是的,确实如此。metro 被绕过了,源代码被动态加载。

这也可能(可能)适用于 shadow-cljs。我仍然希望 metro/babel 能够添加对正确执行此操作的支持,但这种情况似乎在不久的将来不会发生。
by
只是在这里更新一下,shadow-cljs 的最新版本(2.8.45)支持以这种方式的开发源映射——感谢 Thomas!
...