【发布时间】:2019-11-28 21:29:31
【问题描述】:
当我构建我的 Angular 库,将其发布到 npm,并将其用作另一个项目中的依赖项时,每当我尝试将我的模块类导入我的 app.module.ts 时,都会收到此错误 Class TekButtonModule is not an Angular module。我已经按照多个不同站点的步骤来了解如何创建、构建和发布 Angular 库,但我无法弄清楚为什么它不会将该类识别为有效的模块类。
在我的 app.module.ts 中,这是我导入模块的方式:
import { TekButtonModule } from "tek-angular-uimodules";
@NgModule({
imports: [
TekButtonModule
]
})
export class AppModule { }
我的库项目遵循 Angular 概述的标准目录结构。设置库项目时,我没有对构建或路径设置进行任何更改。我构建的库项目有一个bundles、esm5、esm2015、fesm5、fesm2015、lib(我的自定义模块和组件所在的位置),以及一个package.json、@987654333 @(导出 lib 目录中的所有内容)、README.md、tek-angular-uimodules.d.ts(导出公共 api)和 tek-angular-uimodules.metadata.json 文件。
是否需要一些额外的配置,默认情况下未设置才能使模块正常工作?
这是我的按钮模块类:
import { CommonModule } from "@angular/common";
import { NgModule } from "@angular/core";
import { TekButton } from "./button";
@NgModule({
declarations: [
TekButton
],
exports: [
TekButton
],
imports: [
CommonModule
]
})
export class TekButtonModule {}
以下是我构建项目时生成的一些文件:
tek-angular-uimodules.d.ts:
/**
* Generated bundle index. Do not edit.
*/
export * from './public-api';
public-api.ts
export * from "./lib/button";
export * from "./lib/button-group";
export * from "./lib/nav-bar";
./lib/button/button-module.d.ts
export declare class TekButtonModule {
}
如果我在 app.module.ts 文件中手动从 esm5 目录导入生成的 javascript 模块文件,那么它就可以正常工作。但是我必须手动执行此操作,因为它应该只与 WebStorm 自动为我导入的标准模块导入一起工作,就像任何其他包一样。
这是esm5目录下生成的模块js文件:
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { CommonModule } from "@angular/common";
import { NgModule } from "@angular/core";
import { TekButton } from "./button";
var TekButtonModule = /** @class */ (function () {
function TekButtonModule() {
}
TekButtonModule.decorators = [
{ type: NgModule, args: [{
declarations: [
TekButton
],
exports: [
TekButton
],
imports: [
CommonModule
]
},] }
];
return TekButtonModule;
}());
export { TekButtonModule };
//# sourceMappingURL=data:application/json;base64
感谢任何帮助。如果需要,我可以提供更多代码和屏幕截图。
【问题讨论】:
标签: javascript angular typescript npm angular-module