【问题标题】:TypeScript source map files don't work with ChromeTypeScript 源地图文件不适用于 Chrome
【发布时间】:2012-11-14 04:28:07
【问题描述】:

我正在尝试让 TypeScript 源代码调试在 Chrome 中工作,但我遇到了两个特定且可能相关的问题。

首先,TypeScript/WebEssentials 编译器生成的注释应该识别源映射文件的位置,如下所示:

//sourceMappingUrl=MySourceFile.js.map

但 Chrome 不会读取该文件。似乎期望评论看起来像这样:

//@ sourceMappingUrl=MySourceFile.js.map

如果我手动更改评论并刷新我的页面,那么对所有 .ts 文件的引用就会神奇地显示为 Chrome 开发者工具中的源代码。

但是,这导致了我的第二个问题,因为文件实际上并没有被加载。 Chrome应该尝试下载的 .ts 源文件是http://localhost/MySourceFile.ts,但实际上尝试下载的是http://localhost/C:/source/web/MySourceFile.ts。这是有道理的,因为 MySourceFile.js.map 的打开属性如下所示:

{"version":3,"file":"tmp1523.tmp","sources":["C:/source/web/MySourceFile.ts"

但这显然不适用于 Chrome,因为它将源地图位置解释为完全相对的,并且 IIS(非常正确)不会提供任何看起来像 http://localhost/C:/source/web/MySourceFile.ts 的 URL。

那么,关于这两个问题,是 Chrome 还是 TypeScript 源映射功能做错了?这样做的推荐方法是什么?

我正在使用 Chrome 25.0.1323.1 dev-m,TypeScript 0.8.1 和 WebEssentials 1.8.5。

【问题讨论】:

  • 这可能是 Web Essentials 问题。要么就是编译器行为已经改变。由于 WE 1.8.2 和更高版本的一些错误,我在 TS 0.8.0 / WE 1.8.1 上,并且源映射在 Chrome 中正常工作。我的源映射以{"version":3,"file":"pe.plugins.js","sources":["pe.plugins.ts"] ... (etc) 开头,JS 注释是//@ sourceMappingURL=pe.plugins.js.map。不确定新的源映射功能是否与 Chrome 兼容,现在他们已将其更改为在 VS/IE 中工作?
  • 另请参阅(页面下方的更新):johnpapa.net/debug-with-typescript08 - some earlier versions of Web Essentials 2012 may interfere with the TypeScript debugging ... I have had much success using Web Essentials 2012 version 1.8.8.1.
  • @JcFx - 最后就是了。 madskristensen.net/custom/webessentials2012.vsix 的 WebEssentials 版本(当前为 1.8.9.66,与 visualstudiogallery.msdn.microsoft.com/… 上的 1.8.5 相比)正确生成地图文件。把它变成一个答案,我会给你信用:-)。

标签: google-chrome typescript web-essentials source-maps


【解决方案1】:

这是 Web Essentials 的 1.8.5 版(当前可从 Visual Studio 库中获得的版本)的问题。最新的夜间版本(在撰写本文时http://madskristensen.net/custom/webessentials2012.vsix)修复了问题并正确生成了地图链接。

【讨论】:

  • 我尝试在 chrome 中调试 typescript 启用了 chrome 中的源映射,还尝试在 ie10 中进行调试,但在 vs 2012 中断点永远不会被命中
  • @Nikos - TypeScript 中的源映射支持似乎还不是很好。我最终把它关掉了——错误太多了。除此之外,在 VS2012 中,如果您在 IE 中刷新页面,您的任何 TS 断点都不会被命中。所以我的大部分调试都是在浏览器中而不是在 VS2012 中进行的。
  • 它在 Chrome 中一直对我很有效。我通常使用“调试器”(或使用 Chrome F12 工具)设置断点,当它中断时,我得到 ts 源(而不是 js)并且可以查看 ts 成员的值等。除了他们引入时的快速测试该功能,我没有使用 VS2012 进行调试 - 对于客户端代码来说似乎有点笨拙。
  • @Nikos - TS 0.8.2 可能会解决您的一些问题:“我们在 0.8.2 中进一步改进了 Visual Studio TypeScript 调试体验。调试器现在将在 F5 之后执行断点(刷新) “ blogs.msdn.com/b/typescript/archive/2013/01/21/…
  • @JcFx 谢谢老兄!做得好!我现在访问的几乎所有公司都提倡 TS。
猜你喜欢
  • 2016-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-11
  • 2013-07-17
  • 2013-09-30
  • 2015-07-11
相关资源
最近更新 更多