TypeScript source map files don't work with Chrome

Ken Smith picture Ken Smith · Nov 26, 2012 · Viewed 14.5k times · Source

I'm trying to get TypeScript source debugging working in Chrome, but I'm running into two specific and perhaps related problems.

The first is that the comment generated by the TypeScript/WebEssentials compiler that's supposed to identify the location of the source map file looks like this:

//sourceMappingUrl=MySourceFile.js.map

But Chrome won't read that file. It seems expect that the comment will look like this:

//@ sourceMappingUrl=MySourceFile.js.map

If I manually change the comment to that, and refresh my page, then magically the references to all the .ts files show up as sources in the Chrome Developer Tools.

However, that leads to my second problem, as the files don't actually get loaded. The .ts source file that Chrome should be trying to download is http://localhost/MySourceFile.ts, but the one that it's actually trying to download is http://localhost/C:/source/web/MySourceFile.ts. That sort of makes sense, as the opening attributes of MySourceFile.js.map look like this:

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

But that obviously doesn't work with Chrome, as it interprets the source-map location to be entirely relative, and IIS (quite correctly) won't serve up any URL looking like http://localhost/C:/source/web/MySourceFile.ts.

So, with respect to these two problems, is it Chrome or the TypeScript source-map feature that's doing it wrong? And what's the recommended way of doing this?

I'm using Chrome 25.0.1323.1 dev-m, with TypeScript 0.8.1 and WebEssentials 1.8.5.

Answer

Jude Fisher picture Jude Fisher · Nov 26, 2012

This is an issue with version 1.8.5 of Web Essentials (the version currently available from the Visual Studio Gallery). The latest nightly build (at time of writing http://madskristensen.net/custom/webessentials2012.vsix) fixes the problem and generates the map linkage correctly.