在构造角度6库时为导出的符号生成的元数据中遇到错误

问题描述 投票:5回答:3

从我的库中执行'ng build'时出现以下错误。

我目前正在使用Angular 6,但我相信这个错误与版本无关。

/home/rafaelvicio/desenv/my-lib/arquitetura-web/projects/pf-siseg/src/lib/keycloak-service/keycloak.service.ts:13:1:为导出的符号'KeycloakService'生成的元数据中遇到错误: /home/rafaelvicio/desenv/my-lib/arquitetura-web/projects/pf-siseg/src/lib/keycloak-service/keycloak.service.ts:18:12:收集的元数据包含将在运行时报告的错误:只能初始化变量和常量,因为模板编译器需要此变量的值。 {“_ _ symbolic”:“错误”,“消息”:“变量未初始化”,“行”:17,“字符”:11}错误:/ home / rafaelvicio / desenv / my-lib / arquitetura-web / projects / pf-siseg / src / lib / keycloak-service / keycloak.service.ts:13:1:为导出的符号'KeycloakService'生成的元数据遇到错误: /home/rafaelvicio/desenv/my-lib/arquitetura-web/projects/pf-siseg/src/lib/keycloak-service/keycloak.service.ts:18:12:收集的元数据包含将在运行时报告的错误:只能初始化变量和常量,因为模板编译器需要此变量的值。 {“_ _ symbolic”:“错误”,“消息”:“变量未初始化”,“行”:17,“字符”:11} at / home / rafaelvicio / desenv / my-lib / arquitetura-web / node_modules / @ angular / compiler-cli / src / metadata / collector.js:707:31位于validateMetadata的Array.forEach()(/ home / rafaelvicio / desenv / my-lib / arquitetura-web / node_modules / @ angular / compiler-cli / src / metadata / collector.js:695:46)在MetadataCollector.getMetadata(/home/rafaelvicio/desenv/my-lib/arquitetura-web/node_modules/@angular/compiler-cli/src/metadata/collector.js:550 :21)在Object.getSourceFileMetadata上的MetadataCache.getMetadata(/home/rafaelvicio/desenv/my-lib/arquitetura-web/node_modules/@angular/compiler-cli/src/transformers/metadata_cache.js:86:41) home.rafaelvicio/desenv/my-lib/arquitetura-web/node_modules/@angular/compiler-cli/src/transformers/compiler_host.js:112:56)at Object.readMetadata(/ home / rafaelvicio / desenv / my-lib TsompilerAotCompiler上的/arquitetura-web/node_modules/@angular/compiler-cli/src/transformers/metadata_reader.js:46:37) StaticSymbolResolver.getModuleMetadata中的TypeCheckHostAdapter.getMetadataFor(/home/rafaelvicio/desenv/my-lib/arquitetura-web/node_modules/@angular/compiler-cli/src/transformers/compiler_host.js:464:38)(/ home / rafaelvicio / desenv/my-lib/arquitetura-web/node_modules/@angular/compiler/src/aot/static_symbol_resolver.js:480:49)在StaticSymbolResolver._createSymbolsOf(/ home / rafaelvicio / desenv / my-lib / arquitetura-web / node_modules) /@angular/compiler/src/aot/static_symbol_resolver.js:268:33)

keycloak.service.ts:

import { Injectable } from '@angular/core';
import { KeycloakLoginOptions } from './keycloak.d';

import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs/Observable';

import * as Keycloak from './keycloak';

export type KeycloakClient = Keycloak.KeycloakInstance;
type InitOptions = Keycloak.KeycloakInitOptions;

@Injectable()
export class KeycloakService {

    constructor(private http: HttpClient) { }

    static keycloakAuth: KeycloakClient;

.... More code here
angular angular-cli angular-library angular-cli-v6
3个回答
11
投票

在声明静态方法的类之前添加// @dynamic


0
投票

我今天在util类中遇到了这个问题,它提供了静态方法作为帮助器。

我用this(类名本身)取代ObjectUtils解决了它,它的确有效。

正如@NicolasThierion在@ stack247评论的reply中提到的那样,你也可以尝试以下hack

// @dynamic
export class SomeClass {
    public static get() { return 'someValue'; } 
}

-1
投票

我遇到了同样的问题,并通过从变量中删除'static'来解决问题。

© www.soinside.com 2019 - 2024. All rights reserved.