【发布时间】: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