请在2024年Clojure调查问卷!中分享您的观点。

欢迎!请查看关于页面了解更多关于这是如何工作的信息。

+6
ClojureScript

如果能找到一种方法使源映射与react native和shadow-cljs配合,将非常有用,因为目前捆绑器存在一个问题,阻止提供额外的源映射,因此它默认情况下不可用,需要某种形式的解决方案。

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

在使用与figwheel配合的react native软件包时,似乎可以绕过这个问题;我想知道我们是否可以使用shadow-cljs来实现源映射的功能 - 可能是通过合并自己的sourcemaps来实现的。

我注意到有几个软件包可以用于合并源映射 - 例如,sorcery https://npmjs.net.cn/package/sorcery 和 merge-source-maps https://npmjs.net.cn/package/merge-source-maps,但我不确定如何将这些软件包集成到捆绑器中。

1 答案

+2

被选中
 
最佳答案

我的理解是,source-maps只有在使用“在Chrome中调试”选项并且JS代码实际上是在Chrome中加载的情况下才工作?否则我可能遗漏了某个重要地方,因为经过metro处理的来源肯定不支持合并source maps。

在接下来的几周内,我将致力于支持react-native,届时我会进一步研究这个问题。

是的,source maps只有在启用“在Chrome中调试”时才工作——然而这对于开发来说已经足够有用——如果错误发生时你开启了“捕获异常断点”,那么调试器会中断,你将被带到导致错误的行。在figwheel的开发模式下,这某种方式会将映射回clojurescript文件(这可能与插件绕过了打包器有关?)。
是的,这正是metro绕过的方式和动态加载来源。

这与shadow-cljs也可以做到(有很大可能会这样做)。我仍然抱有希望metro/babel会添加对这种正确实现的官方支持,但看起来这不会在近期内发生。
更新一下,最新的shadow-cljs版本(2.8.45)支持按这种方式进行开发中的source maps——感谢Thomas!
...