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

欢迎!请参阅关于页面以获取更多关于该页面的信息。

+6
ClojureScript

如果有一种方法可以让源映射在React Native和Shadow-Cljs中工作,那么对调试来说将非常有用。目前存在一个问题,打包器阻止提供额外的源映射,因此开箱即用不可行,需要一些解决方案。

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

使用React Native和Figwheel可以在某种程度上绕过这个问题;我想知道我们是否可以用Shadow-Cljs做些事来使源映射工作 - 毕竟,可能需要我们自己合并源映射。

我发现有一些合并源映射的包 - 例如 sorcery https://npmjs.net.cn/package/sorcery 和 merge-source-maps https://npmjs.net.cn/package/merge-source-maps,但我不确定如何将这些连接到打包器中。

1 个回答

+2

被选中
 
最佳答案

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

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

是的,只有启用“在Chrome中调试”时,source maps才会工作 - 但是这对于开发来说足够有用 - 如果在有错误发生时启用“捕获异常时暂停”,则调试器将中断并带到导致错误的代码行。在dev模式下的figwheel中,这 somehow 回到 clojurescript 文件,(可能是因为绕过了捆扎器?)
是的,完全正确。绕过了 metro,并且动态加载源码。

这对于 shadow-cljs 也可能(很可能会)被做到。我还希望 metro/babel 将会添加对此类操作的支持,但似乎这不是近期即将发生的事情。
在此仅作更新,最新版本的 shadow-cljs(2.8.45)支持如下方式在开发中使用源映射 - 感谢 Thomas!
...