ChatGPT解决这个技术问题 Extra ChatGPT

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

我正在使用 es6 modulesTypeScriptSystemJS 作为模块加载器创建一个 Ionic 应用程序。这是我的设置:

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 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>

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

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

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

这似乎是一个奇怪的建议,因为这个问题自 1 月 11 日以来一直是开放的,但我建议你可能深入研究 webpack。我一直在阅读 SystemJS,但我不觉得它会满足您的需求。
看起来如果你不能像你正在做的那样在 html 中加载脚本,那么你就不走运了。正如您所见,Chrome 似乎是唯一支持此功能的浏览器。
使用 debugger JS 关键字
@KamilKiełczewski 这个问题明确指出'我正在寻找一种比'在每个脚本中放置一个调试器语句'......'更复杂的解决方案。

J
Jorge Olaf

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

例子:

https://resources.jetbrains.com/help/img/idea/2019.3/ws_quick_start_debug_built_in_server_1.png

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

WebStorm 的一些替代方案:

Atom(免费) Intellij IDEA(社区:免费) Visual Studio Code(免费)...

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


我一直在尝试进入 Webstorm,但是我有很多 Webstorm 没有的 VS Code 中的扩展系统提供的有用功能,很难实现跳跃。
r
rexfordkelly

您是否考虑过使用远程调试器,例如 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/


关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅