SourceMap读取失败

时间:2017-10-23 12:33:57

标签: visual-studio-2017 winjs typescript-2.5

我有一个WinJS-UWP-Application,我使用的是TypeScript 2.5。我刚从VS2015升级到VS2017。当我想调试我的WinJS-UWP-Application时,我的.ts-Files中的断点没有被注意到,因为SourceMap没有被正确读取。我没有改变任何项目配置。
在输出中,我收到此消息:

  

SourceMap   ms-appx://8d7814f6-7286-4475-8ed8-be1c489c2253/js/main.js.map read   失败:无法识别URI前缀..   我的CompilerOptions是:

"compilerOptions": {
    "target": "es5",
    "removeComments": true,
    "preserveConstEnums": true,
    "sourceMap": true
  }

应用程序的最小和目标版本为:10.0.14393.0
我是否需要在VS2017中设置其他任何内容?

修改
重现的步骤:

  1. 在VS 17中使用Min和目标版本创建一个新的UWP WinJS-App:10.0.14393.0
  2. 删除js \ main.js
  3. 在js文件夹中添加main.ts文件
  4. 创建一个tslib文件夹并在[例如来自DefinetlyTyped]中插入winjs.d.ts
  5. 在main.ts中添加以下代码:
  6. /// <reference path="../tslib/winjs.d.ts"/>
    
    WinJS.UI.processAll().then(() => {
        let div: HTMLDivElement = document.createElement("div");
        let label: HTMLLabelElement = document.createElement("label");
        label.textContent = "Hello from the TypeScript-Side";
        div.appendChild(label);
        document.body.appendChild(div);
    });

    1. 从VS17模板添加新的tsconfig.json。
    2. 使用AnyCPU配置启动应用
    3. 预期结果: 在应用程序内部,您会看到文字:

        

      内容就在这里!
        来自TypeScript-Side的Hello:

      在输出中,您会看到以下两条消息:

        

      'WWAHost.exe'(脚本):加载'脚本代码(MSAppHost / 3.0)'。
        SourceMap ms-appx://32fb2864-03cf-4387-8a05-6c65a66c5a48/js/main.js.map读取失败:无法识别URI前缀..

      编辑2: main.js.map的内容:

      {
        "version": 3,
        "file": "main.js",
        "sourceRoot": "",
        "sources": [ "main.ts" ],
        "names": [],
        "mappings": "AAAA,2CAA2C;AAE3C,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC;IACvB,IAAI,GAAG,GAAmB,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACxD,IAAI,KAAK,GAAqB,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9D,KAAK,CAAC,WAAW,GAAG,gCAAgC,CAAC;IACrD,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC"
      }

      EDIT3:
      TypescriptBuild-设置:

      TypeScript version: 2.5
      Compile on save: Yes
      Allow implicit 'any' types: Yes
      Keep comments in JavaScript output: Yes
      Generate declaration files: No
      Generate source maps: Yes
      Specify root directory of source maps: $(MSBuildProjectDirectory)
      Specify root directory of TypeScript files: $(MSBuildProjectDirectory)
      Emit on error: No
      

      如果删除tsconfig.json,则会正确创建源地图。但我需要tsconfig.json以获得其他一些选项,因此删除它不是一种选择!

1 个答案:

答案 0 :(得分:1)

我找到了解决此问题的解决方法。我不知道为什么会这样,但是如果你添加一行:

"mapRoot": "js/"

它可以正常工作。

这仅适用于默认目录设置!