如何在 Vue + TS + Webpack 项目中获取 TypeScript 错误以匹配原始行号

Joã*_*tos 10 typescript webpack vue.js vuejs3

因此,我使用 Webpack 设置了一个 Vue 项目,然后安装了正确的加载器并移至 SFC 内的 TypeScript。一切运行良好,只是在构建时捕获的 TS 错误会相应地显示在编译文件中,从而使调试变得困难。

我的 Webpack 配置如下所示:

// ...
module.exports = {
  // ...
  module: {
    rules: [
      {
        test: /\.vue$/,
        use: 'vue-loader',
      },
      {
        test: /\.tsx?$/,
        loader: 'ts-loader',
        options: {
          appendTsSuffixTo: [/\.vue$/]
        }
      },
      {
        test: /\.css$/,
        use: [
          'vue-style-loader',
          'css-loader',
          'postcss-loader'
        ]
      },
      {
        test: /\.png$/,
        use: 'file-loader'
      }
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

因此,.vue 文件在构建期间由 ts-loader 进行转换,最终我在 Webpack 输出中收到如下错误:

ERROR in /home/mega/savitri/packages/frontend/src/components/molecules/CSearch/CSearch.vue.ts
52:29-59
[tsl] ERROR in /home/mega/savitri/packages/frontend/src/components/molecules/CSearch/CSearch.vue.ts(52,30)
      TS2571: Object is of type 'unknown'.
ts-loader-default_0c5a263502dc9404

ERROR in /home/mega/savitri/packages/frontend/src/components/molecules/CSearch/CSearch.vue.ts
57:27-39
[tsl] ERROR in /home/mega/savitri/packages/frontend/src/components/molecules/CSearch/CSearch.vue.ts(57,28)
      TS2571: Object is of type 'unknown'.
ts-loader-default_0c5a263502dc9404

ERROR in /home/mega/savitri/packages/frontend/src/components/molecules/CSearch/CSearch.vue.ts
66:27-39
[tsl] ERROR in /home/mega/savitri/packages/frontend/src/components/molecules/CSearch/CSearch.vue.ts(66,28)
      TS2571: Object is of type 'unknown'.
ts-loader-default_0c5a263502dc9404

ERROR in /home/mega/savitri/packages/frontend/src/components/molecules/CSearch/CSearch.vue.ts
74:42-54
[tsl] ERROR in /home/mega/savitri/packages/frontend/src/components/molecules/CSearch/CSearch.vue.ts(74,43)
      TS2571: Object is of type 'unknown'.
ts-loader-default_0c5a263502dc9404
Run Code Online (Sandbox Code Playgroud)

四处搜索,我发现了几个有关源映射的答案,但据我所知,这仅适用于开发工具调试。如何使错误与原始文件相匹配以便解决它们?

小智 0

Enable Source Maps for TypeScript: In your tsconfig.json, ensure that you have source maps enabled:

{
  "compilerOptions": {
    "sourceMap": true,
    // ... other options
  }
}




2.  Configure Webpack for Source Maps:

module.exports = {
  // ...
  devtool: 'eval-source-map',
  // ...
}
Run Code Online (Sandbox Code Playgroud)