web-dev-qa-db-ja.com

angular 6ライブラリを構築するときに、エクスポートされたシンボルに対して生成されたメタデータでエラーが発生しました

ライブラリから「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
8
Rafael Augusto

追加 // @dynamic静的メソッドを宣言するクラスの前

15
taha manar

私は今日、ヘルパーとして静的メソッドを提供するutilクラスでこの問題に遭遇しました。

thisObjectUtils(クラス名自体)に置き換えることで解決しましたが、機能します。

また、@ NicolasThierionが彼の 返信 @ stack247によってコメントされているように、次のハックを試すこともできます

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

Angular V8を使用していて、同じ問題が発生しました。Angularは、静的変数を初期化できません。解決策は、nullで初期化することでした。エラーを回避します。

@Injectable()
export class ExampleService {

    static URL: string = null;
...
0

私は同じ問題を抱えていて、変数から「static」を削除することで問題を解決しました。

0
quinlanofcork