首页 > 解决方案 > TypeScript:创建子类时未定义抽象类(对象原型可能仅为对象或null:未定义)

问题描述

我使用 lerna 构建了一个名为“tyframe”的框架作为 monorepo。( https://github.com/tyframe/tyframe ) 目前有“core”和“example”两个包。后者旨在用于演示目的并按预期工作。

现在我想在不同的 Web 项目中使用包“@tyframe/core”但没有成功。

问题:

我的 App 类继承自 AbstractApplication 类,但在运行时 AbstractApplication 未定义,我收到错误“对象原型可能只是一个对象或 null:未定义”。

为了演示问题并使其易于理解,我在 Stackblitz 上创建了一个最小示例:https ://stackblitz.com/edit/typescript-av2uka?devtoolsheight=33&file=index.ts

当我发布我的框架以便我可以在其他 Web 项目中使用它时,还有什么需要考虑的吗?

更多信息:

我正在使用 webpack 构建我的框架:

module.exports = {
    mode: 'development',
    devtool: 'inline-source-map',
    module: {
      rules: [
        {
          test: /\.ts$/,
          use: {
              loader: 'ts-loader',
              options: {
                  configFile: 'tsconfig.build.json',
              }
          },
          exclude: /node_modules/,
        },
      ],
    },
    resolve: {
      extensions: [ '.ts', '.js' ],
    },
  };

在编译过程中不会抛出任何错误。

有人有想法吗?

标签: typescriptwebwebpack

解决方案


我找到了解决方案。

@mbdavis 是对的!(见评论)

我使用 webpack 构建了我的核心包,它将所有文件编译为 es5 并将它们捆绑到一个文件(index.js)中。但是对于每个源文件,必须在 dist 文件夹中存在一个单独的 js 文件。

所以我改变了构建过程,直接使用了Typescript编译器。

我已在以下提交中进行了所有必要的更改:https ://github.com/tyframe/tyframe/commit/c0820361fa23ceab9428c1a5c7def7a4d0faf1bc

用于更改的 Dist 文件夹:

在此处输入图像描述

更改后的 Dist 文件夹:

dist_folder_after_changes


推荐阅读