带有 sourcemap 的 Webpack 无法解析生产模式下的变量

2024-02-04

我想使用 Webpack 为我们的生产构建生成源映射。我设法生成它,但是当我在调试器中的断点处停止时,变量未解析:

我究竟做错了什么?如何生成一个源映射,让 chrome devtools 在我停止在调试器中的断点处时解析变量?

这些是我的 webpack 配置:

webpack.config.js:

const path = require('path');
const ROOT = path.resolve( __dirname, 'src/main/resources/packedbundle' );

const HtmlWebpackPlugin = require('html-webpack-plugin');
const LoaderOptionsPlugin = require('webpack/lib/LoaderOptionsPlugin');
const ExtractTextPlugin = require("extract-text-webpack-plugin");

module.exports = {
context: ROOT,

resolve: {
    extensions: ['.ts', '.js']
},

module: {
    rules: [
        {
            test: /\.ts$/,
            exclude: /node_modules/,
            use: [
                {
                    loader: 'eslint-loader',
                    options: {
                        failOnError: true,
                        quiet: true
                    }
                }
            ],
            enforce: 'pre'
        },

        {
            test: /\.ts$/,
            exclude: [ /node_modules/ ],
            use: [
                'ng-annotate-loader',
                'awesome-typescript-loader'
            ]
        },

        {
            test: /\.scss$/,
            use: ExtractTextPlugin.extract({
                fallback: 'style-loader',
                use: ['css-loader', 'sass-loader'],
                publicPath: '../'
            }),
        },

        {
            test: /\.(jpg|png|gif)$/,
            use: 'file-loader'
        },

        {
            test: /\.(svg|woff|woff2|eot|ttf)$/,
            use: 'file-loader?outputPath=fonts/'
        },

        {
            test: /.html$/,
            exclude: /index.html$/,
            use: 'html-loader'
        }
    ]
},

plugins: [
    new HtmlWebpackPlugin({
        title: 'AngularJS - Webpack',
        template: 'index.html',
        inject: true
    }),
    new LoaderOptionsPlugin({
        debug: true
    }),
    new ExtractTextPlugin('css/style.css')
],

entry: './index.ts'

};

webpack-prd.config.js:

const path = require('path');
const webpackMerge = require('webpack-merge');
const commonConfig = require('./webpack.config.js');
const DESTINATION = path.resolve( __dirname, 'dist/packedbundle' );

const UglifyJsPlugin = require('uglifyjs-webpack-plugin');

module.exports = webpackMerge(commonConfig, {
    devtool: 'module-source-map',
    mode: 'production',
    output: {
        path: DESTINATION,
        filename: 'js/[name]-bundle-[chunkhash].js'
    },

    optimization: {
        minimizer: [
            new UglifyJsPlugin({
                sourceMap: true
            })
        ]
    }
});

package.json:

{
  "name": "com.avon.maps.packedbundle.webcontent",
  "version": "1.0.0",
  "description": "Packed bundle creation screen frontend",
  "main": "index.js",
  "scripts": {
    "prestart": "rimraf dist",
    "start": "node node/node_modules/npm/bin/npx-cli.js check-node-version --package && webpack --config webpack-dev.config.js",
    "prebuild": "rimraf dist",
    "build": "node node/node_modules/npm/bin/npx-cli.js check-node-version --package && webpack --config webpack-prd.config.js",
    "test": "mocha -r ts-node/register -r ignore-styles -r jsdom-global/register __tests__/**/*.spec.ts"
  },
  "author": "BlackBelt",
  "private": true,
  "engines": {
    "node": "11.10.0"
  },
  "devDependencies": {
    "@types/angular": "1.6.51",
    "@types/angular-loading-bar": "0.0.35",
    "@types/chai": "4.1.7",
    "@types/core-js": "2.5.0",
    "@types/jquery": "3.3.29",
    "@types/kendo-ui": "2019.1.1",
    "@types/mocha": "5.2.6",
    "@types/node": "10.12.0",
    "@types/underscore": "1.8.13",
    "@types/webpack-env": "1.13.6",
    "@typescript-eslint/eslint-plugin": "1.6.0",
    "@typescript-eslint/parser": "1.6.0",
    "acorn": "6.1.1",
    "awesome-typescript-loader": "5.2.1",
    "chai": "4.2.0",
    "check-node-version": "3.2.0",
    "css-loader": "1.0.0",
    "eslint": "5.16.0",
    "eslint-config-airbnb-base": "13.1.0",
    "eslint-loader": "2.1.2",
    "eslint-plugin-import": "2.16.0",
    "extract-text-webpack-plugin": "v4.0.0-beta.0",
    "file-loader": "2.0.0",
    "html-loader": "0.5.5",
    "html-webpack-plugin": "3.2.0",
    "ignore-styles": "5.0.1",
    "istanbul-instrumenter-loader": "3.0.1",
    "jsdom": "14.0.0",
    "jsdom-global": "3.0.2",
    "mocha": "6.1.2",
    "ng-annotate-loader": "0.6.1",
    "node-sass": "4.11.0",
    "rimraf": "2.6.2",
    "sass-loader": "7.1.0",
    "style-loader": "0.23.1",
    "ts-node": "8.0.3",
    "typescript": "3.4.2",
    "uglifyjs-webpack-plugin": "2.0.1",
    "webpack": "4.23.1",
    "webpack-cli": "3.1.2",
    "webpack-merge": "4.1.4"
  },
  "dependencies": {
    "angular": "1.7.5",
    "core-js": "3.0.1",
    "growl": "1.10.5",
    "jquery": "3.3.1",
    "underscore": "1.9.1"
  }
}

我无法分享源代码,但我使用了this https://github.com/frederikprijck/angularjs-webpack-starterangularjs webpack 启动项目来启动我的项目。


Webpack 和 terser-webpack-plugin 中无效源映射的问题从以下内容开始解决网页包 4.39.2 https://github.com/webpack/webpack/releases/tag/v4.39.2 and terser-webpack-插件 1.4.0 https://github.com/webpack-contrib/terser-webpack-plugin/releases/tag/v1.4.0.

v4.39.0 https://github.com/webpack/webpack/releases/tag/v4.39.0发布日志:

webpack-sources + terser-webpack-plugin 附带了 SourceMap 的质量优化

还有一个额外的issue https://github.com/webpack/webpack-sources/pull/67,其修复程序随后发布。它被包括在内webpack-sources v1.4.2/webpack 4.39.2。综上所述4.39.2或者最新版本是可以选择的。

Details

生产模式下的源图似乎按预期工作 https://github.com/webpack/webpack/issues/8302现在大多数情况下。不幸的是,如果您在丑化/缩小/优化过程中进行了不平凡的代码转换,例如函数内联(存在于源代码中,但从 webpack 中溶解),断点有时仍然没有得到很好的映射 https://github.com/webpack/webpack/issues/8302#issuecomment-521779175。部分原因是,源映射规范在这些方面含糊不清。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带有 sourcemap 的 Webpack 无法解析生产模式下的变量 的相关文章

随机推荐

  • 将库添加到 Vivado 2014.4

    我对 Vivado 和 VHDL 还很陌生 我想要一些关于基本问题的指导 我猜我可以创建自己的库并在我的项目中使用它们 就像使用默认库和基本库一样 eg library IEEE use IEEE std logic 1164 ALL us
  • 如何拆分邮件合并并以合并字段作为名称保存文件

    我设置了一堆邮件合并模板 当我合并文档时 我想将结果拆分为单独的文件 每个文件的名称基于合并字段 FileNumber 我目前拥有的代码是 Sub splitter Based on a macro by Doug Robbins to s
  • 使用 Shiro 登录后重定向到最后访问的页面

    使用 apache shiro 登录并重定向到最后访问的页面的更好方法是什么 我只有这个 SecurityUtils getSubject login new UsernamePasswordToken username password
  • 将“NonSerializedAttribute”设置为自动属性

    这在 C 中无法完成 有什么办法可以做到吗 laugh 以防我的双关语不被理解 我的意思是 如何将 C 中的属性标记为 NonSerialized 当然 当属性包含逻辑时 很自然地无法做到这一点 但是自动属性是可序列化的 因此 我希望有某种
  • 头部和身体之间的脚本元素。 [HTML5] [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 当我向W3C验证时 我收到了回复 头
  • TensorFlow Serving:将图像传递给分类器

    我在 Tensorflow Python tensorflow 1 9 0 和 tensorflow serving 1 9 0 中构建了一个简单的分类器 它将对象分类为 5 个类之一 现在 我想为该模型提供服务 我已经导出它并给它一个分类
  • 未使用哈希默认值[重复]

    这个问题在这里已经有答案了 今天我尝试了以下代码片段 但我不明白为什么它们之间会得到不同的结果 据我所知 它们是相同的 一使用默认值offHash另一个片段在访问该键之前为该键创建一个空数组 有谁明白发生了什么事吗 Hash default
  • Makefile C子目录规则make obj

    我正在运行一个简单的 Makefile 没有任何问题 CC gcc CFLAGS std c99 ggdb Wall I DEPS hellomake h OBJ hellomake o hellofunc o o c DEPS CC c
  • MySQL存储过程创建用户

    我正在尝试创建一个存储过程来在 mysql 服务器 5 6 21 中创建用户 但它抛出以下错误 错误代码 1445 不允许从存储的函数设置自动提交 或触发 下面的代码 CREATE PROCEDURE add User IN p Name
  • 在 SwiftUI 中为多值更改贡献动画(动画弃用)

    所以 我有一些结构为我提供了很多参数 struct MyAppearance public var offset CGSize zero public var scale CGFloat public var rotation SwiftU
  • HSV OpenCv 颜色范围[重复]

    这个问题在这里已经有答案了 谁能告诉我一个网站的名称或任何地方我可以从哪里获得基本颜色的 HSV 上限和下限范围 例如 黄 绿 红 蓝 黑 白 橙 实际上 我正在制作一个机器人 它首先会遵循黑色线 然后在线的中间会给出另一种颜色 其中 3
  • 可拖动图钉 Windows Phone 7 bing 地图控件

    只是想知道是否有任何关于如何在 Windows Phone 7 应用程序中为地图编写可拖动图钉的资源 我仔细查看了 只能找到有关如何为浏览器应用程序执行此操作的信息 理想情况下 我希望用户能够单击图钉并将其拖动到地图上的某个位置 但是 目前
  • SQL Server FTI:如何检查表状态?

    在 SQL Server 全文索引方案中 我想知道表是否在 start chage tracking mode update index mode start change tracking and start background upd
  • 如何引用语法中先前匹配的项目?

    我正在尝试解析 BibTeX 作者字段 并将其拆分为单独的作者 这将帮助我重写每个作者的姓名首字母 这是一个最小的例子 use v6 my str Rockhold Mark L and Yarwood RR and Selker John
  • android.support.v4.util.Pair 与 android.util.Pair

    我读到support v4lib 允许 android 向后兼容 因此 IIUC 当存在歧义时 最佳实践始终是从以下位置导入库android support v4 right 是的 这是明智的 但并不总是需要 我这个案例Pair是 API
  • 如何从组件打开 ng-template 模态?

    我有一个用 ng template 包裹的模态
  • 克隆系统调用 OS X 未链接 - 未定义的符号 [重复]

    这个问题在这里已经有答案了 我想使用cloneOS X 上的系统调用 这是一个 Unix 系统调用 所以应该不是问题 对吧 我已经成功尝试使用fork vfork以及其他类似的功能 这是我正在尝试的程序 include
  • 如何使用免费且公开的Rapid API并在flutter Application中调用API

    例如 我订阅了一个名为 https rapidapi com rapidapi api movie database imdb alternative 的免费公共 API 其java代码片段如下 OkHttpClient client ne
  • 初始化空切片的正确方法

    要声明一个大小不固定的空切片 最好这样做 mySlice1 make int 0 or mySlice2 int 只是想知道哪一种是正确的方法 您给出的两个替代方案在语义上是相同的 但是使用make int 0 将导致内部调用运行时 mak
  • 带有 sourcemap 的 Webpack 无法解析生产模式下的变量

    我想使用 Webpack 为我们的生产构建生成源映射 我设法生成它 但是当我在调试器中的断点处停止时 变量未解析 我究竟做错了什么 如何生成一个源映射 让 chrome devtools 在我停止在调试器中的断点处时解析变量 这些是我的 w