在使用像SystemJS这样的模块加载器时,在Safari的Web Inspector中进行调试

fik*_*tra 30 javascript safari web-inspector ecmascript-6 systemjs

我正在创建一个Ionic应用程序es6 modules,TypeScriptSystemJS作为模块加载器.这是我的设置:

tsconfig.json:

{
  "compilerOptions": {
    ...
    "target": "es5",
    "module": "system",
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

index.html的:

<script src="lib/system.js"></script>
<script src="systemjs.config.js"></script>
<script>System.import('js/app.js')</script>
Run Code Online (Sandbox Code Playgroud)

示例脚本(TypeScript):

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

export class ConfigLoader {
    ...
}
Run Code Online (Sandbox Code Playgroud)

Chrome中的一切都很棒.但是,在使用Safari的Web Inspector进行调试时,我无法在脚本中放置任何断点,因为Web Inspector仅显示直接从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>
Run Code Online (Sandbox Code Playgroud)

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

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

如何使用SystemJS并同时具备在Safari中调试的能力?我正在寻找比在每个脚本中放置调试器语句更复杂的解决方案......

Jor*_*sen 1

好吧,也许您可​​以使用一些 IDE,例如WebStorm,以及强大的 Web 和 Node 调试器。

例子:

在此输入图像描述 在此输入图像描述 在此输入图像描述

您可以在此处查看有关 WebStorm 调试器的更多信息。

WebStorm 的一些替代方案:

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

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