ค้นหาเว็บไซต์

javascript - การนำเข้าแผนที่ซอร์สของ Webpack ไม่ได้ถูกกำหนด (ตัวดีบักเกอร์ของ Firefox)


ฉันพยายามที่จะเข้าใจ webpack และการสร้าง source maps ในขณะที่ source maps ถูกสร้างขึ้นมา ฉันไม่สามารถดีบักการ import ได้ ดูรูปนี้ของ chrome debugger และ firefox (รุ่นพัฒนา 57) debugger (และเพื่อเป็นหลักฐานว่าตัว debugger ทำงาน ตัวอย่างนี้คือเว็บไซต์บนอินเทอร์เน็ตที่กำลังถูกดีบักในหน้าต่าง firefox อีกอันหนึ่ง)

ฉันต้องการใช้ Firefox ดังนั้นฉันจะตั้งค่าแผนที่แหล่งที่มาให้ทำงานอย่างถูกต้องและให้ข้อมูลเกี่ยวกับโมดูลที่นำเข้าได้อย่างไร

ตัวอย่างที่เรียบง่ายของฉันอยู่ที่นี่:

main.ts

import { write } from './utils';
import { Stack } from './stack';

const appRef: any= document.querySelector('#app');

const stack: Stack = new Stack(['alice', 'bob', 'eve']);

stack.add('charlie');

write(stack.members.toString(), appRef);

stack.ts

export class Stack {

  private _members: string[];

  constructor(members: string[]) {
    this._members = members;
  }

  get members(): string[] {
    return this._members;
  }

  push(member: string) {
    this._members.push(member);
  }

  pop(): string | undefined {
    return this._members.pop();
  }

}

ยูทิลส์.ts

export function write(text: string, domElement: any) {
  if (domElement) {
    const textNode: any = document.createTextNode(text);
    domElement.append(textNode);
  } else {
    document.write(text);
  }
}

tsconfig.json

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "sourceMap": true,
    "strict": true
  }
}

webpack.config.js

    const path = require('path');
const webpack = require('webpack');
const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
  entry: './src/main.ts',
  module: {
    rules: [
      {
        test: /\.tsx?$/,
        use: 'ts-loader',
        exclude: /node_modules/
      }
    ]
  },
  resolve: {
    extensions: [".ts", ".js"]
  },
  output: {
    filename: 'bundle.js',
    path: path.resolve(__dirname, 'dist')
  },
  devtool: 'source-map',
  devServer: {
    contentBase: path.resolve(__dirname, '.'),
    hot: true
  },
  plugins: [
    new HtmlWebpackPlugin({
      filename: 'index.html',
      template: 'index.html'
    }),
    new webpack.NamedModulesPlugin(),
    new webpack.HotModuleReplacementPlugin()
  ],
};