【问题标题】:Debugging TypeScript code with Visual Studio使用 Visual Studio 调试 TypeScript 代码
【发布时间】:2012-09-24 13:52:00
【问题描述】:

有没有办法在 Visual Studio 中调试 TypeScript 源代码(而不是调试生成的 javascript)?

来自 TypeScript 语言规范:

TypeScript 可选地提供源映射,启用源级调试。

因此,我希望能够在 ts 代码中放置断点并能够对其进行调试,但它不起作用。我没有在规范中找到任何其他关于调试的提及。我应该做些什么来完成这项工作吗?也许“可选”这个词暗示我需要做一些事情才能让它工作......有什么建议吗?

【问题讨论】:

标签: visual-studio typescript


【解决方案1】:

VS2017 及更高版本的当前答案

自 VS2017 以来,直接在 Visual Studio 中调试 Typescript 成为可能。来自documentation

您可以使用 Visual Studio 调试 JavaScript 和 TypeScript 代码。您可以设置和命中断点、附加调试器、检查变量、查看调用堆栈以及使用其他调试功能。

Debugging Typescript / Asp.NET Core in Visual Studio 上还有其他资源。

也可以在Visual Studio Code中调试typescript:

Visual Studio Code 通过其内置的 Node.js 调试器以及 Debugger for Chrome 等扩展程序支持 TypeScript 调试,以支持客户端 TypeScript 调试。

VS 早期版本的原始答案:

您可能无法在 VS 中进行调试,但您可以在某些浏览器中进行调试。 Aaron Powell 刚刚发表了一篇关于让断点在 Chrome Canary 中工作的博客:https://www.aaron-powell.com/posts/2012-10-03-typescript-source-maps/

总结(非常简要地)Aaron 所说的内容,您使用编译器上的-sourcemap 开关在与源代码相同的目录中生成*.js.map 文件。在支持 source maps(Chrome Canary,可能是最近的 Firefox 版本,因为它们是 Mozilla 的想法)的浏览器中,您可以像调试 .js 文件一样调试您的 .ts 源代码。

博客的结尾是“希望 Visual Studio 或 IE(或两者)团队也选择 Source Maps 并添加对它们的支持。” - 这表明它还没有发生。

更新:

随着 TypeScript 0.8.1 的发布,Source Map 调试现在也可以在 Visual Studio 中使用:

https://blogs.msdn.com/b/typescript/archive/2012/11/15/announcing-typescript-0-8-1.aspx

来自公告:

调试 TypeScript 现在支持源代码级调试!源映射格式 作为一种调试语言的方式,它已经越来越受欢迎 翻译成 JavaScript 并被各种浏览器和支持 工具。在 0.8.1 版本中,TypeScript 编译器正式发布 支持源映射。此外,新版本的 TypeScript 用于 Visual Studio 2012 支持使用源映射格式进行调试。 从命令行,我们现在完全支持使用 --sourcemap 标志,它输出与 JavaScript 输出相对应的源映射文件。该文件将允许直接调试 支持源映射的浏览器和 Visual 中的原始 TypeScript 源 工作室。 要在 Visual Studio 中启用调试,请在使用 TypeScript 项目创建 HTML 应用程序后从下拉列表中选择“调试”。

更新

WebStorm 还增加了对通过 SourceMaps 进行调试的支持:http://blog.jetbrains.com/webide/2013/03/webstorm-6-0-released-adds-typescript-debugging-with-source-maps-fresh-ui-and-much-more/

首先,WebStorm 允许更智能、更精简的网络 使用 TypeScript、CoffeeScript 等现代语言进行开发 镖。除了为这些提供一流的代码编辑器 语言,WebStorm 6 提供:

这些高级语言的自动编译/转译 在所有支持的平台上被浏览器识别的那些。 TypeScript、Dart 或 CoffeeScript 的全功能调试 源地图。

【讨论】:

  • 真的需要 Chrome Canary 吗?我在 Chrome 稳定版上,我看到“启用源地图”是开发人员工具设置窗口中的一个选项。
  • 我认为当 Aaron 写博客时(以及当我发布这个答案时),Canary 是必要的。到目前为止,该功能必须已经渗透到发布。
  • 现在,使用 Internet Explorer 时,似乎可以直接在 Visual Studio GUI 中调试 TypeScript。我想知道这是否也可以用其他浏览器实现。
  • 我无法让 VS 2012 调试 TS
  • 通过使用“Web 扩展”生成源地图为我工作
【解决方案2】:

这已在 VS 2017 中得到修复,因此您可以直接在 Visual Studio 和 typescript 中进行调试。

只需在 *.ts 文件中设置断点,它就会被命中。

它会在 VS 而不是 IE 中调试,就像你在调试 c# 一样。

【讨论】:

    【解决方案3】:

    简短回答:重新启动 Visual Studio

    背景: 我有 2 个 Visual Studio 2015 实例,其中有两个使用 TypeScript 的不同项目。第一个启动的实例没有正确调试,第二个没有。 所有项目设置都是相同的。 我终于重新启动了第一个实例,然后它调试了 TypeScript(最后)。

    【讨论】:

    • 在某些情况下可能会起作用,但作为一般提示它没有用。
    【解决方案4】:

    使用 VS2013 Typescript 应用程序,我无需更改 web.config 中的任何内容。我在 ts 文件中放了一个断点,在 IE 中调试,结果断点在 TypeScript 中停止了。

    【讨论】:

    • 我同意。我正在使用 VS 2013 更新 2。
    • 感谢您对IE的指点。不幸的是,调试在 Chrome 中不起作用。
    • 我的猜测是微软利用 ie 中的一些钩子来使调试过程工作,而其他浏览器尚不支持。在浏览器中生成的 javascript 和 IDE 中的源代码之间有一个中间代码映射文件,它就像一个合同。我很高兴它完全有效。
    【解决方案5】:

    使用 Visual Studio 调试 typescript 可以使用正确的设置。 (在以前的 VS 版本中,我有时会遇到问题,以下是它在 VS 2015 CTP 6 上的工作方式)

    1. 首先您确保在将 typescript 编译为 javascript 时创建源映射。所以你应该在每个 xxx.js 附近都有一个 xxx.js.map 文件。

      通过在 Visual Studio 之外运行 typescript 编译器来获取源映射不会造成任何困难,在 tsc 命令行添加

      --sourcemap %1.ts
      

      默认情况下,您的 gulp 脚本通常会创建源映射。

    2. 在 Visual Studio 中配置您的 Web 应用程序

      Internet Explorer 设置为启动浏览器。我认为它只适用于 IE,并且认为任何其他浏览器都不会。

      在项目属性中转到“Web”选项卡并配置底部的“调试器”部分:禁用所有调试器!这是违反直觉的,您可能会看到以下错误消息:

      您已尝试启动调试器,但根据您在 Web 属性页面上的当前调试设置,没有可调试的进程。当“不打开页面时,会发生这种情况。选择选项选项,并禁用ASP.NET调试。请检查您在 Web 属性页面上的设置,然后重试。

      正如错误消息所述,Web 属性顶部的开始操作应该是另一个选项,例如“当前页面”。

      现在或以后在 Visual Studio 中的 ts 代码中设置 断点

      F5

    虽然您可以使用 Visual Studio 编辑器来调试和编辑 ts 文件,但“编辑并继续”将不起作用,目前没有可以重新加载 js 和 js.map 文件并继续的浏览器。 (如果我错了,请纠正我,我会很高兴。)

    【讨论】:

    • 自 4 月以来您的设置是否有任何更改?
    • 你觉得这篇文章有用吗?
    【解决方案6】:

    TypeScript 调试在我的任何机器上都无法使用 VS2013 Update 3。经过一番挫折,我决定尝试更新到 VS2013 Update 4 CTP。 VS 终于断点了!

    【讨论】:

    • 感谢更新 4 ctp 抬头,安装。我的机器有更新 3 和打字稿调试工作。但是,启动 ie 尤其需要很长时间,因为每次编译 Web 应用程序时(尽管我只更改了 ts 代码)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-04
    • 2011-10-11
    • 2016-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-20
    相关资源
    最近更新 更多