在 Safari 的 Web Inspector 中调试,当使用 SystemJS 等模块加载器时

我正在使用 和 模块加载器创建应用程序。这是我的设置:Ionices6 modulesTypeScriptSystemJS

tsconfig.json:

{
  "compilerOptions": {
    ...
    "target": "es5",
    "module": "system",
    ...
  }
}

索引.html:

<script src="lib/system.js"></script>
<script src="systemjs.config.js"></script>
<script>System.import('js/app.js')</script>

示例脚本 (TypeScript):

import {IConfig} from "./app-config";

export class ConfigLoader {
    ...
}

在Chrome中,一切都运行良好。但是,当使用 Safari 的 Web 检查器进行调试时,我无法在脚本中放置任何断点,因为 Web 检查器仅显示直接从 HTML 加载的脚本(通过脚本标记),而不显示由 XHR 加载的脚本(在我的情况下,由 SystemJS 加载)。这意味着我无法调试自己的脚本,这当然是不可接受的。

我尝试像以前一样使用SystemJS来解决这个问题,但也将脚本标签放在html中,如下所示:

<script src="lib/system.js"></script>
<script src="systemjs.config.js"></script>
<script src="js/app-config.js"></script>
 ... other app scripts
<script>System.import('js/app.js')</script>

但是,这不起作用,因为SystemJS似乎对此并不满意:

无效的系统.注册调用。匿名 System.register 调用只能由 SystemJS.import 加载的模块进行,而不能通过脚本标记进行。

我如何使用SystemJS,同时能够在Safari中进行调试?我正在寻找一种比“在每个脚本中放置调试器语句”更复杂的解决方案......


答案 1

好吧,也许你可以使用一些像WebStorm这样的IDE,以及一个强大的Web和Node调试器。

例子:

enter image description here enter image description here enter image description here

你可以在这里看到更多关于WebStorm调试器的信息

WebStorm的一些替代方案:

  1. 原子 (免费)
  2. Intellij IDEA (社区: 免费)
  3. Visual Studio Code (Free)
  4. ...

附言:我使用WebStorm开发Ionic和React应用程序:D


答案 2

您是否考虑过使用远程调试器,例如 https://github.com/google/ios-webkit-debug-proxy

还有ghostlab,这是一篇关于入门的好文章 https://css-tricks.com/using-chrome-devtools-to-debug-javascript-in-any-browser-with-ghostlab-2/