源映射没有正确映射,除了"条目"在webpack中指定

时间:2018-03-26 06:02:21

标签: javascript asp.net node.js webpack asp.net-core

我使用的是ASP.NET Core 2.0。如果有人想查看详细代码或自行运行,可以在此处找到代码:https://github.com/jakelauer/BaseballTheater/tree/master/BaseballTheaterCore

我的基本问题是,我希望项目中每个生成的js文件都能将源地图恢复为原始.ts.tsx文件。对于我的entry文件(./ClientApp/boot.tsx), 除外。

这是我的webpack.config.js

const path = require('path');
const webpack = require('webpack');
const ExtractTextPlugin = require('extract-text-webpack-plugin');
const CheckerPlugin = require('awesome-typescript-loader').CheckerPlugin;
const bundleOutputDir = './wwwroot/dist';

module.exports = (env) => {
    const isDevBuild = !(env && env.prod);
    return [{
        stats: { modules: false },
        entry: { 'main': './ClientApp/boot.tsx' },
        resolve: { extensions: ['.js', '.jsx', '.ts', '.tsx'] },
        output: {
            path: path.join(__dirname, bundleOutputDir),
            filename: '[name].js',
            publicPath: 'dist/'
        },
        module: {
            rules: [
                { test: /\.tsx?$/, include: /ClientApp/, use: 'awesome-typescript-loader?silent=true' },
                { test: /\.css$/, use: isDevBuild ? ['style-loader', 'css-loader'] : ExtractTextPlugin.extract({ use: 'css-loader?minimize' }) },
                {
                    test: /\.scss/,
                    use: ["style-loader", "css-loader", "sass-loader"]
                },
                { test: /\.(png|jpg|jpeg|gif|svg)$/, use: 'url-loader?limit=25000' }
            ]
        },
        plugins: [
            new CheckerPlugin(),
            new webpack.DllReferencePlugin({
                context: __dirname,
                manifest: require('./wwwroot/dist/vendor-manifest.json')
            })
        ].concat(isDevBuild ? [
            // Plugins that apply in development builds only
            new webpack.SourceMapDevToolPlugin({
                filename: '[file].map', // Remove this line if you prefer inline source maps
                moduleFilenameTemplate: path.relative(bundleOutputDir, '[resourcePath]') // Point sourcemap entries to the original file locations on disk
            })
        ] : [
            // Plugins that apply in production builds only
            new webpack.optimize.UglifyJsPlugin(),
            new ExtractTextPlugin('site.css')
        ])
    }];
};

根据我对此文件的解释以及对有限的对webpack的理解,这应该可行。我的每个文件都生成了一个.js.map文件,它似乎在生成的.js文件中被引用。但是,在Chrome中进行调试时,除了boot.tsx之外,它们都没有实际加载。

Chrome中某个js文件的示例:

enter image description here

该文件确实有正确的文件要加载: enter image description here

当我在main.js.map中打开/wwwroot/dist/而在其中打开{+ 1}}的Ctrl + F时,我只找到ts而没有找到其他.ts或.tsx文件我期待找到。

我不是网络专家,所以我不确定还能做什么!

1 个答案:

答案 0 :(得分:0)

从评论中,我们通过以下方式解决了问题:

  1. 升级到最新的webpack(本例中为v4)和
  2. 通过npm install --save-dev source-map-loader
  3. 安装源地图加载器
  4. webpack.config.js
  5. 中设置devtool: 'source-map'

    source-map option告诉webpack发出一个完整的独立源映射文件。这是来自webpack文档:

      

    source-map - 完整的SourceMap作为单独的文件发出。它为捆绑包添加了一个引用注释,以便开发工具知道在哪里找到它。