2017-05-24 32 views
3

Angular 2アプリでは、 "ng build --prod"を使用しているときにのみビルドエラーが発生し、 "ng build"または "ng serve"では使用できません。エラーメッセージは次のとおりです。シンボル値を静的に解決する際にエラーが発生しました

ERROR in Error encountered resolving symbol values statically. Expression form not supported (position 27:55 in the original .ts file), resolving symbol RestService in [...]/src/app/shared-modules/service/rest/rest.service.ts 

ERROR in ./src/main.ts 
Module not found: Error: Can't resolve './$$_gendir/app/app.module.ngfactory' in 'C:\LPROG\Ldev\Projekte\svn\hippo_branch\frontend\shared\src' 
@ ./src/main.ts 5:0-74 
@ multi ./src/main.ts 

関連するコード部分はこれです:

constructor(
     private http: Http, 
     private mappingService: MappingService, 
     private backendUrlService: BackendUrlService, 
     @Inject('RestServiceConfig') public config: {rest_api_name: string}) { 

私はこれにそれを変更することができます。

constructor(
     private http: Http, 
     private mappingService: MappingService, 
     private backendUrlService: BackendUrlService, 
     @Inject('RestServiceConfig') public config: any) { 

これは "NGビルド--prod" と連携します私たちはその変化に生きることができると思います(私はまだ他のバグがありますが、関連してはいけません)が、なぜそうであり、強いタイピングをしたいのでしょうか?誰かが私にそれを説明できますか?

ng -v 
    _      _     ____ _  ___ 
/\ _ __ __ _ _ _| | __ _ _ __ /___| | |_ _| 
/△ \ | '_ \/_` | | | | |/ _` | '__| | | | | | | 
/___ \| | | | (_| | |_| | | (_| | |  | |___| |___ | | 
/_/ \_\_| |_|\__, |\__,_|_|\__,_|_|  \____|_____|___| 
       |___/ 
@angular/cli: 1.0.0-rc.1 
node: 6.9.4 
os: win32 x64 
@angular/common: 2.4.10 
@angular/compiler: 2.4.10 
@angular/core: 2.4.10 
@angular/forms: 2.4.10 
@angular/http: 2.4.10 
@angular/platform-browser: 2.4.10 
@angular/platform-browser-dynamic: 2.4.10 
@angular/router: 3.4.10 
@angular/cli: 1.0.0-rc.1 
@angular/compiler-cli: 2.4.10 

答えて

0

そのコマンドが同様--aotスイッチを意味しますので、あなたがng build --prodを使用するときにのみエラーが出る理由があります。

角度のAhead of Timeコンパイルでは、コードを静的に解析する必要があります。払い戻しは、パッケージサイズの大幅な削減です。私はあなたのコードを以下のように変更することをお勧めします。これは強力なタイピングとAOTを提供します。再利用可能なタイプもあります:

// Before your class 
export interface Config { 
    rest_api_name: string; 
} 

// In your class 
constructor(
    private http: Http, 
    private mappingService: MappingService, 
    private backendUrlService: BackendUrlService, 
    @Inject('RestServiceConfig') public config: Config) { 
+0

いいですね。残念ながら、私はその間に別のプロジェクトに移動しており、検証できません。他の誰かがそれを確認してくれますか、私に知らせてください。 –

関連する問題