ライブラリから「ngbuild」を実行しているときに次のエラーが発生します。
現在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": "error"、 "message": "Variable not initialize"、 "line":17、 "character":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": "error"、 "message": "Variable not initialize"、 "line":17、 "character":11} at/home/rafaelvicio/desenv/my-lib/arquitetura- web/node_modules/@ angular/compiler-cli/src/metadata/collector.js:707:31 at Array.forEach()at validateMetadata(/ 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)at MetadataCache.getMetadata(/home/rafaelvicio/desenv/my-lib/arquitetura-web/node_modules/@angular/compiler-cli/src/transformers/metadata_cache.js:86:41)at Object.readMetadata(/ home/rafaelvicio/desenv/my-lib/arquitetura-web/node_modules/@ angular /コンパイラ-cli/src/transformers/metadata_reader.js:46:37)at TsCompilerAot RegulatorTypeCheckHostAdapter.getMetadataFor(/home/rafaelvicio/desenv/my-lib/arquitetura-web/node_modules/@angular/compiler-cli/src/transformers/compiler_Host.js:464:38)at StaticSymbolResolver.getModuleMetadata(/ home/rafaelvicio/desenv/my-lib/arquitetura-web/node_modules/@ angular /コンパイラ/src/aot/static_symbol_resolver.js:480:49)at 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
追加 // @dynamic
静的メソッドを宣言するクラスの前
私は今日、ヘルパーとして静的メソッドを提供するutil
クラスでこの問題に遭遇しました。
this
をObjectUtils
(クラス名自体)に置き換えることで解決しましたが、機能します。
また、@ NicolasThierionが彼の 返信 @ stack247によってコメントされているように、次のハックを試すこともできます
// @dynamic
export class SomeClass {
public static get() { return 'someValue'; }
}
Angular V8を使用していて、同じ問題が発生しました。Angularは、静的変数を初期化できません。解決策は、nullで初期化することでした。エラーを回避します。
@Injectable()
export class ExampleService {
static URL: string = null;
...
私は同じ問題を抱えていて、変数から「static」を削除することで問題を解決しました。