webpack 构建:类扩展值未定义

Get*_*awn 5 javascript typescript webpack

我有 3 个文件,它们看起来像这样:

工具/索引.ts

export * from './Vector2'
export * from './Sprite'
export * from './GameObject'
export * from './Component'
Run Code Online (Sandbox Code Playgroud)

util/Component.ts

export interface ComponentType<T extends Component> {
    new(gameObject: GameObject): T;
}

export class Component { }
Run Code Online (Sandbox Code Playgroud)

组件/刚体.ts

import { Component } from '../util'
export class Rigidbody extends Component { }
Run Code Online (Sandbox Code Playgroud)

在编辑器中一切正常,当代码编译成 javascript 时。但是,当我在浏览器中运行代码时,出现错误:

未捕获的类型错误:类扩展值未定义不是构造函数或 null

这是指 export class Rigidbody extends Component

如果我将导入更改为导入Component文件而不是index文件,则它可以工作:

import { Component } from '../util/Component'
Run Code Online (Sandbox Code Playgroud)

我也有一个Transform导入Component文件的文件,它做同样的事情。

是我做错了什么还是我用 webpack 构建它的方式?

这是我的 webpack 文件:

const path = require('path')

module.exports = {
  entry: './src/index.ts',
  devtool: 'inline-source-map',
  module: {
    rules: [
      {
        test: /\.tsx?$/,
        use: 'ts-loader',
        exclude: /node_modules/
      }
    ]
  },
  resolve: {
    extensions: [".tsx", ".ts", ".js"],
    alias: {
      PIXI: path.join(__dirname, 'node_modules/pixi.js/lib/index.js')
    }
  },
  output: {
    libraryTarget: 'var',
    library: 'phoenix',
    filename: 'phoenix.js',
    path: path.resolve(__dirname, 'dist')
  }
};
Run Code Online (Sandbox Code Playgroud)