我制作了一个自定义的“角度组件库”。我称这个库为ACL
我正在将库导入另一个项目。我跑的时候
ionic-app-scripts build
,它成功构建
但是,当我跑步时
ionic-app-scripts build --prod
它给了我以下错误消息。任何一个有任何线索的人。
在静态解析符号值时遇到错误。调用函数'ɵmakeDecorator',不支持函数调用。
考虑使用对导出函数的引用替换函数或lambda,在C:/Monsenso-Source/administration/node_modules/@monsenso/components/node_modules/@angular/core/core.d.ts中解析符号NgModule,在C:/Monsenso-Source/administration/node_modules/@monsenso/components/dist/web.module.d.ts中解析符号WebModule,在C:/ Monsenso-Source / administration / node_modules / @ monsenso / components /中解析符号WebModule DIST / web.module.d.ts 在错误(本机) at syntaxError(C:\ Monsenso-Source \ administration \ node_modules \ @angular \ compiler \ bundles \ compiler.umd.js:1550:34) 在simplifyInContext(C:\ Monsenso-Source \ administration \ node_modules \ @angular \ compiler \ bundles \ compiler.umd.js:23870:23) 在StaticReflector.simplify(C:\ Monsenso-Source \ administration \ node_modules \ @angular \ compiler \ bundles \ compiler.umd.js:23882:13) 在StaticReflector.annotations(C:\ Monsenso-Source \ administration \ node_modules \ @angular \ compiler \ bundles \ compiler.umd.js:23331:41) 在NgModuleResolver.resolve(C:\ Monsenso-Source \ administration \ node_modules \ @angular \ compiler \ bundles \ compiler.umd.js:13883:70) 在CompileMetadataResolver.getNgModuleMetadata(C:\ Monsenso-Source \ administration \ node_modules \ @angular \ compiler \ bundles \ compiler.umd.js:14473:60) at addNgModule(C:\ Monsenso-Source \ administration \ node_modules \ @angular \ compiler \ bundles \ compiler.umd.js:23050:58) 在C:\ Monsenso-Source \ administration \ node_modules \ @angular \ compiler \ bundles \ compiler.umd.js:23061:14 at Array.forEach(native) 错误命令失败,退出代码为1。
如果执行以下命令,也会出现同样的错误:
"node_modules/.bin/ngc" -p tsconfig-aot.json
ACL的代码
页模板-middle.component.html
<ion-content padding>
<ion-grid>
<ion-row>
<ion-col col-4>
<!-- empty -->
</ion-col>
<ion-col col-4>
<ng-content></ng-content>
</ion-col>
<ion-col col-4>
<!-- empty -->
</ion-col>
</ion-row>
</ion-grid>
</ion-content>
页模板-middle.component.ts
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'mon-page-template-middle',
templateUrl: './page-template-middle.component.html'
})
export class PageTemplateMiddleComponent {
}
web.module.ts
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';
import { IonicApp, IonicModule } from 'ionic-angular';
import {
PageTemplateMiddleComponent
} from './components/page-template-middle/page-template-middle.component';
@NgModule({
declarations: [
PageTemplateMiddleComponent
],
exports: [
PageTemplateMiddleComponent
],
imports: [
BrowserModule,
FormsModule,
HttpModule,
IonicModule
],
providers: [
]
})
export class WebModule {
}
消费者项目代码
app.module.ts
import { BrowserModule } from '@angular/platform-browser';
import { ErrorHandler, NgModule } from '@angular/core';
import { IonicApp, IonicErrorHandler, IonicModule } from 'ionic-angular';
import { WebModule } from '@monsenso/components';
import { MyAppComponent } from './app.component';
import { HomePageComponent } from '../pages/home/home';
@NgModule({
bootstrap: [IonicApp],
declarations: [
MyAppComponent,
HomePageComponent
],
entryComponents: [
MyAppComponent,
HomePageComponent
],
imports: [
BrowserModule,
WebModule,
IonicModule.forRoot(MyAppComponent)
],
providers: [
{provide: ErrorHandler, useClass: IonicErrorHandler}
]
})
export class AppModule {
}
答案 0 :(得分:0)
我无法对您正在处理的代码做出任何陈述,因为您还没有在您的问题中粘贴任何代码。但总的来说,这个错误与Angular的AOT编译器无法解决参数&#34;类型&#34;在未从模块中导出的匿名函数中。
例如,假设我有一个工厂功能,我想用它来提供一些服务,以便在我的某些组件中使用。
import { NgModule } from '@angular/core';
import { MyService } from './my-service';
@NgModule({
providers: [{
provide: MyService,
useFactory: () => {
return new MyService();
},
}],
})
export class MyModule {}
在该示例中,您可以看到一个匿名(未命名)函数被用作我的工厂函数。如果您没有编译AOT,这将正常工作,否则会中断。
要解决此问题,需要从模块中导出该函数(&#34;模块&#34;在Typescript意义上)。
import { NgModule } from '@angular/core';
import { MyService } from './my-service';
export function myServiceFactory() {
return new MyService();
}
@NgModule({
providers: [{
provide: MyService,
useFactory: myServiceFactory,
}],
})
export class MyModule {}
我不能说你的错误与使用工厂函数的ACL Angular Module完全相关。但是,您在问题中粘贴的错误与Angular无法静态分析函数完全相关,因为它尚未导出。