【问题标题】:"Unverified Breakpoints" when using VS debugger on Vue components within TS file在 TS 文件中的 Vue 组件上使用 VS 调试器时出现“未验证的断点”
【发布时间】:2019-12-05 18:03:48
【问题描述】:

问题:
当我在运行 VS 调试器时在我的 TS 文件和 Vue 组件中设置断点时,我得到了未经验证的断点。我不知道它是否相关,但这是 Jupyter Lab 后端的 FE 代码,但我认为这不会影响 VS 调试器?我认为我的配置可能只是错误的。我还尝试在 Vue 和 TS 代码中添加“调试器”,但它们也从未受到影响。

我的尝试:
我尝试以多种方式配置启动文件 这是我的 VS 调试器的 launch.json:

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "chrome",
            "request": "launch",
            "name": "Remote debugging",
            "sourceMaps": true,
            "url": "http://localhost:8888/?token=<>",
            "webRoot": "${workspaceFolder}",
            "sourceMapPathOverrides": {
                "*": "${webRoot}/*"
              }
        },
        {
            "type": "node",
            "request": "launch",
            "name": "Launch Webpack",
            "program": "${workspaceFolder}",
            "cwd": "${workspaceFolder}",
            "sourceMaps": true
        },
    ]
  }

这是我的 TS.config

{
  "compilerOptions": {
    "sourceMap": true,
    "strict": true,
    "strictPropertyInitialization": false,
    "strictFunctionTypes": false,
    "module": "amd",
    "moduleResolution": "node",
    "allowSyntheticDefaultImports": true,
    "target": "es2017",
    "lib": ["es2017", "dom"],
    "allowJs": true,
    "skipLibCheck": true,
    "newLine": "LF",
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true
  },
  "include": ["src/**/*"]
}

这是我的 webpack.development.js。我发布它的原因是因为我在开发工具下为它设置了源映射。

/**
 * Webpack configuration for production.
 *
 * Optimizes and minifies bundle.
 */

const webpack = require("webpack");
const merge = require("webpack-merge");
const commonConfig = require("./webpack.common.js");

module.exports = merge.multiple(commonConfig, {
  mode: "production",
  devtool: "source-map",
  main: {
    optimization: {
      minimize: true
    },
    plugins: [
      new webpack.LoaderOptionsPlugin({
        minimize: true,
        debug: false
      }),
      new webpack.DefinePlugin({
        "process.env": {
          NODE_ENV: JSON.stringify("production")
        }
      }),
      // new webpack.optimize.UglifyJsPlugin({
      //   beautify: false,
      //   compress: {
      //     warnings: false,
      //     drop_console: true
      //   },
      //   comments: false,
      //   sourceMap: true
      // }),
      new webpack.optimize.OccurrenceOrderPlugin(),
      new webpack.optimize.ModuleConcatenationPlugin()
    ]
  }
});

这是我的 webpack

// Entry point webpack config that delegates to different environments depending on the --env passed in.
module.exports = function(env) {
  process.env.NODE_ENV = env;
  return require(`./webpack.${env}.js`);
};

这是我的 webpack.production

/**
 * Webpack configuration for production.
 *
 * Optimizes and minifies bundle.
 */

const webpack = require("webpack");
const merge = require("webpack-merge");
const commonConfig = require("./webpack.common.js");

module.exports = merge.multiple(commonConfig, {
  mode: "production",
  devtool: "source-map",
  main: {
    optimization: {
      minimize: true
    },
    plugins: [
      new webpack.LoaderOptionsPlugin({
        minimize: true,
        debug: false
      }),
      new webpack.DefinePlugin({
        "process.env": {
          NODE_ENV: JSON.stringify("production")
        }
      }),
      // new webpack.optimize.UglifyJsPlugin({
      //   beautify: false,
      //   compress: {
      //     warnings: false,
      //     drop_console: true
      //   },
      //   comments: false,
      //   sourceMap: true
      // }),
      new webpack.optimize.OccurrenceOrderPlugin(),
      new webpack.optimize.ModuleConcatenationPlugin()
    ]
  }
});

【问题讨论】:

    标签: typescript vue.js webpack jupyter jupyter-lab


    【解决方案1】:

    您能否尝试从您的 chrome 启动配置中删除 sourceMapPathOverrides 条目?

    "sourceMapPathOverrides": {
      "*": "${webRoot}/*"
    }
    

    不确定,为什么要手动设置它,VS Code 的 default overrides 应该已经很好了,如果你保留默认的 webpack devtoolModuleFilenameTemplate 设置(我没有看到你的配置中指定的设置)。这些设置会影响如何为源映射解析 webpack 的自定义 webpack:/// 模式。问题是,如果您在此处手动设置某些内容,所有默认值将被覆盖。

    如果您可以在development 下调试,但不能在production 模式下进行调试,那可能是因为生产源映射的 webpack/terser-webpack-plugin 问题。在此处观看:Link1Link2

    例如

    {
      ...
      mode: "development",
      devtool: "inline-source-map" (or "source-map")
    }
    

    在我的环境中确实有效。

    更新:

    我刚刚看到,在您的 webpack 开发配置中,您也设置了 mode: "production"。你能把它改成"development",看看它是否有效?

    【讨论】:

    • 是的,我确实尝试删除 sourceMapPathOverrides 并且 devtool 设置为“source-map”。我的怀疑是 webpack 将它捆绑,然后 Jupyter 实验室再次捆绑它,因此它丢失了源映射,因此无法调试。
    • omg..... 它的作品!你真是个天才!!没有人能弄清楚这一点,即使是 Jupyter Lab 论坛上的人。
    • 享受你的赏金,先生
    • 请注意,“inline-source-map”是允许它工作的原因。
    • 很高兴它有帮助:-)
    猜你喜欢
    • 2018-08-21
    • 1970-01-01
    • 2022-11-04
    • 2019-01-15
    • 2018-11-21
    • 1970-01-01
    • 1970-01-01
    • 2020-11-28
    • 2021-09-12
    相关资源
    最近更新 更多