Typescript + gulp-sourcemaps 生成地图,但浏览器 DevTools 无法识别它

Posted

技术标签:

【中文标题】Typescript + gulp-sourcemaps 生成地图,但浏览器 DevTools 无法识别它【英文标题】:Typescript + gulp-sourcemaps generates map but browser DevTools don't recognize it 【发布时间】:2016-09-15 14:37:38 【问题描述】:

使用 Typescript 1.8Gulp 3.9.0gulp-sourcemaps 1.6.0tsconfig.json强>文件。

在很久以前的某个时候,它运行良好。最近(我无法确定何时),Chrome 和 Firefox 都不会真正使用 sourcemap。

我已经在 Chrome 上启用了 sourcemap,并识别出有一个 sourcemap,并在控制台中告诉我:

“检测到源映射。应将关联文件添加到文件树中。您可以将这些解析的源文件作为常规 javascript 文件进行调试。关联文件可通过文件树或 Ctrl + P 获得。”

但是,这两种方法都无法获得源文件。

在本地构建时构建文件结构(仅以登录为例):

build
  |- resources
      |- js
         |- app.js
         |- app.js.map
         |- typescript
              |- app.ts
              |- sections
                    |- login
                         |- LoginService.ts
                         |- LoginDirective.ts
                         |- LoginController.ts

但是,Chrome 只在文件树中显示:

build
  |- resources
      |- js
         |- app.js

就是这样。没有 Typescript 文件夹,没有文件。 Ctrl-P 也找不到它们。所以我在调试的时候只能调试编译好的app.js文件,看不到Typescript代码。

我的 gulp 文件相关部分:

var ts = require( 'gulp-typescript' ); // compiles typescript
var tsProject = ts.createProject( 'tsconfig.json' );

gulp.task( 'compile:typescript', function () 
    var tsResult = tsProject
        .src() // instead of gulp.src(...)
        .pipe( sourcemaps.init() )
        .pipe( ts( tsProject ) );

    return tsResult.js
        .pipe( sourcemaps.write( '.', 
             
               includeContent: false, 
               sourceRoot: 'typescript'
             ) 
         )
        .pipe( './build' )
        ;
 );

我查看了针对类似情况的各种文档和解决方案,但我仍然没有让 Chrome 使用源映射。

https://www.npmjs.com/package/gulp-sourcemaps

https://github.com/ivogabe/gulp-typescript/issues/201

https://github.com/floridoo/gulp-sourcemaps/issues/89#issuecomment-73184103

gulp-typescript: Problems using createProject ...“还有更多!”

不知道为什么这不能正常工作。有什么见解吗,堆垛机?

【问题讨论】:

嗨,伙计!您找到问题的答案了吗?我面临着类似的事情,但我使用 requirejs 工具进行了 js 编译 【参考方案1】:

在 chrome 开发工具中打开设置(Windows 中的 F1)。

确保选项:

来源:

在导航器中自动显示文件 启用 JavaScript 源映射

已检查

【讨论】:

作为 OP,我看到该消息是因为我正在检查生成的 JS...检查这些选项后,您必须在“文件系统”面板中选择关联文件并对其进行调试。【参考方案2】:

可能不是您要找的,我个人使用webpacksource-map-loader 并且能够正确显示源映射,尽管在“webpack://”下

你可以在https://github.com/unional/aurelia-logging-color查看我的配置

希望对你有帮助。

【讨论】:

【参考方案3】:

我相信您的问题在于您如何定义sourceRoot。试试sourceRoot: './typescript/'

【讨论】:

以上是关于Typescript + gulp-sourcemaps 生成地图,但浏览器 DevTools 无法识别它的主要内容,如果未能解决你的问题,请参考以下文章

TypeScript入门五:TypeScript的接口

TypeScript系列教程--初探TypeScript

TypeScript入门三:TypeScript函数类型

typescript使用 TypeScript 开发 Vue 组件

认识 TypeScript

Learining TypeScript TypeScript 简介