当前位置:  开发笔记 > 前端 > 正文

如何将webpack源映射制作为原始文件

如何解决《如何将webpack源映射制作为原始文件》经验,为你挑选了1个好方法。

我正在尝试使用VScode从webpack调试用Angular 2构建编写的应用程序。我可以使用VSCode中的chrome扩展调试器来附加我的应用程序。而且确实达到了已编译的js文件的断点。但是它找不到源映射文件。

似乎webpack会有一个webpack://来托管* .js文件指向的文件,如图所示:

而且我可以在webpack文件夹内的ts文件中设置断点。但是vscode找不到ts文件。所以我将webpack的配置更改为

output: {
  path:root('__build');
  devtoolModuleFilenameTemplate: function(info){
    return "file:///"+info.absoluteResourcePath;
  }
},

然后,所有文件似乎都映射到原始ts文件的绝对路径。在chrome开发人员工具中,它看起来像这样:

但是chrome和vscode都表示此file://中的文件与原始ts文件不同。所以我想知道在webpack的配置中是否有一种方法可以使* .js文件源映射变为原始ts文件。这是我的所有配置:

打字稿配置:

{
  "compilerOptions": {
    "outDir": "dist",
    "target": "ES5",
    "module": "commonjs",
    "sourceMap": true
   }
}

webpack配置:

{
  entry: "./src/app/bootstrap",
  output: {
    path: root('__build__'),
    filename: env({
       'development': '[name].js',
       'all': '[name].[hash].min.js'
        }),
    devtoolModuleFilenameTemplate: function(info){
       return "file:///"+info.absoluteResourcePath;
    }
  },
  devtool:'source-map',
  devServer: {
    contentBase: "public/"
  }
}

另一件事是,如果在chrome开发人员工具中,如果我将原始文件添加到工作区中并将文件从file://映射到此文件夹,则实际上可以在这些文件中设置断点。所以我想知道是否有一种方法可以映射到vscode中的本地资源。



1> robrich..:

我改变了这个:

output: {
  // ...snip...
  devtoolModuleFilenameTemplate: function(info){
    return "file:///"+info.absoluteResourcePath;
  }
},

对此:

output: {
  // ...snip...
  devtoolModuleFilenameTemplate: function(info){
    return "file:///"+encodeURI(info.absoluteResourcePath);
  }
},

现在它可以正确地对空格进行编码,并且源映射文件可以按预期工作。

推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有