2024 年 Clojure 调查报告中分享您的想法!

欢迎!有关此功能详细信息,请参阅 关于 页面。

+6
ClojureScript

如果能有一种方法使源映射与 React Native 和 Shadow-Cljs 工作以实现调试功能,那就非常实用了。目前打包器有阻止提供更多源映射的问题,所以它不是默认功能,需要一些解决方案。

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

使用与 figwheel 一起的 React Native 解决了这个问题;我想知道我们是否可以使用 Shadow-Cljs 做些什么来使源映射工作 - 可能是通过我们自己合并源映射。

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

1 个答案

+2

选中
 
最佳回答

我理解,源映射只在启用“在Chrome中调试”选项时工作,在这种情况下JS代码实际上是在Chrome中加载的?否则,我可能在某个地方遗漏了重要的东西,因为经过metro处理的源代码肯定不支持合并源映射。

在接下来的几周内,我将专注于react-native的支持,并进一步研究这个问题。

是的,只有当启用“在Chrome中调试”时源映射才会工作 - 但这对于开发来说已经足够有用 - 如果在出错时启用“捕获异常时暂停”,调试器将中断并您将被带到引起错误的行。在使用figwheel的开发模式中,这似乎与clojurescript文件映射相关,(可能是因为绕过了打包器?)
是的,Exactly。 metro被绕过,源映射以动态方式加载。

这同样可以(很可能会)通过shadow-cljs实现。我仍然希望metro/babel能够添加对这种正常实现的Support,但这似乎不会在短期内发生。
仅为在此更新,最新版本的 shadow-cljs (2.8.45) 支持以这种方式在开发中启用源映射 —— 感谢Thomas!
...