typescript - 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' ],
},
};
在编译过程中不会抛出任何错误。
有人有想法吗?
解决方案
我找到了解决方案。
@mbdavis 是对的!(见评论)
我使用 webpack 构建了我的核心包,它将所有文件编译为 es5 并将它们捆绑到一个文件(index.js)中。但是对于每个源文件,必须在 dist 文件夹中存在一个单独的 js 文件。
所以我改变了构建过程,直接使用了Typescript编译器。
我已在以下提交中进行了所有必要的更改:https ://github.com/tyframe/tyframe/commit/c0820361fa23ceab9428c1a5c7def7a4d0faf1bc
用于更改的 Dist 文件夹:
更改后的 Dist 文件夹: