2016-10-10 73 views
3

當離子2 RC0項目我碰到下面的錯誤做一個ionic build離子生成提供了錯誤:函數調用不支持

[13:26:17] ngc: Error: Error encountered resolving symbol values statically. Function calls are not supported. Consider replacing the function or lambda with a reference to an exported function, resolving symbol AppModule in /Users/billnoble/Documents/YHistory-App3/.tmp/app/app.module.ts, resolving symbol AppModule in /Users/billnoble/Documents/YHistory-App3/.tmp/app/app.module.ts 
at simplifyInContext (/Users/billnoble/Documents/YHistory-App3/node_modules/@angular/compiler-cli/src/static_reflector.js:469:23) 
at StaticReflector.simplify (/Users/billnoble/Documents/YHistory-App3/node_modules/@angular/compiler-cli/src/static_reflector.js:472:22) 
at StaticReflector.annotations (/Users/billnoble/Documents/YHistory-App3/node_modules/@angular/compiler-cli/src/static_reflector.js:61:36) 
at _loop_1 (/Users/billnoble/Documents/YHistory-App3/node_modules/@angular/compiler-cli/src/codegen.js:53:54) 
at CodeGenerator.readFileMetadata (/Users/billnoble/Documents/YHistory-App3/node_modules/@angular/compiler-cli/src/codegen.js:66:13) 
at /Users/billnoble/Documents/YHistory-App3/node_modules/@angular/compiler-cli/src/codegen.js:100:74 
at Array.map (native) 
at CodeGenerator.codegen (/Users/billnoble/Documents/YHistory-App3/node_modules/@angular/compiler-cli/src/codegen.js:100:35) 
at codegen (/Users/billnoble/Documents/YHistory-App3/node_modules/@angular/compiler-cli/src/main.js:7:81) 
at Object.main (/Users/billnoble/Documents/YHistory-App3/node_modules/@angular/tsc-wrapped/src/main.js:30:16) 

任何人都知道我需要做才能擺脫這種錯誤的?

我app.modules.ts文件看起來像這樣:

import { NgModule } from '@angular/core'; 
 
import { IonicApp, IonicModule } from 'ionic-angular'; 
 
import { Camera } from 'ionic-native'; 
 
import { Http, XSRFStrategy, CookieXSRFStrategy } from '@angular/http'; 
 
import { Storage } from '@ionic/storage'; 
 
import { FormsModule } from '@angular/forms'; 
 
import { MyApp } from './app.component'; 
 
import { AboutPage } from '../pages/about/about'; 
 
import { HomePage } from '../pages/home/home'; 
 
import { TabsPage } from '../pages/tabs/tabs'; 
 
import { LoginPage } from '../pages/login/login'; 
 
import { PhotoPage } from '../pages/photo/photo'; 
 
import { AboutPage } from '../pages/about/about'; 
 
import { GalleryPage } from '../pages/gallery/gallery'; 
 
import { SubmittedPage } from '../pages/submitted/submitted'; 
 
import { PhotoPage } from '../pages/photo/photo'; 
 
import { ResetPasswordPage } from '../pages/reset-password/reset-password'; 
 
import { SignupPage } from '../pages/signup/signup'; 
 
import { DjangoAuth } from '../providers/djangoAuth'; 
 
import { ImageData } from '../providers/imageData'; 
 

 
@NgModule({ 
 
    declarations: [ 
 
    MyApp, 
 
    AboutPage, 
 
    HomePage, 
 
    TabsPage, 
 
    LoginPage, 
 
    PhotoPage, 
 
    GalleryPage, 
 
    SubmittedPage, 
 
    ResetPasswordPage, 
 
    SignupPage 
 
    ], 
 
    imports: [ 
 
    IonicModule.forRoot(MyApp, [ 
 
     Http, 
 
     DjangoAuth, 
 
     ImageData, 
 
     FormsModule, 
 
     {provide:XSRFStrategy, useValue: new CookieXSRFStrategy('csrftoken', 'X-CSRFToken')}]) 
 
    ], 
 
    bootstrap: [IonicApp], 
 
    entryComponents: [ 
 
    MyApp, 
 
    AboutPage, 
 
    HomePage, 
 
    TabsPage, 
 
    LoginPage, 
 
    PhotoPage, 
 
    GalleryPage, 
 
    SubmittedPage, 
 
    ResetPasswordPage, 
 
    SignupPage 
 
    ], 
 
    providers: [ 
 
    DjangoAuth, 
 
    ImageData, 
 
    Storage, 
 
    Camera 
 
    ] 
 
}) 
 

 
export class AppModule {}

+0

您應該逐個刪除組件以找出問題。一旦將問題隔離開來,解決問題就會更容易。 –

回答

1

您應該刪除裏面調用的進口:

{provide:XSRFStrategy, useValue: new CookieXSRFStrategy('csrftoken', 'X-CSRFToken')}

和移動宣佈factoryFunction

export function CookieXSRFStrategyFactory(http:Http) { 
return new CookieXSRFStrategy('csrftoken', 'X-CSRFToken'); 

}

,並在您提供這樣寫:

provide:XSRFStrategy, useValue: CookieXSRFStrategyFactory 
1

這是爲了幫助誰來到這裏以後任何人。在升級Angular之後,我直接從提供商那裏調用CookieXSRFStrategy()時遇到類似的問題。

以上答案在Angular v2.4.7中對我沒有幫助,但是下面這樣做了。請注意使用useFactory來引用該對象。

import { XSRFStrategy, CookieXSRFStrategy } from '@angular/http'; 

export function CookieXSRFStrategyFactory() { 
    return new CookieXSRFStrategy('csrftoken', 'X-CSRFToken'); 
} 

export const AppCSRF = { 
    provide: XSRFStrategy, 
    useFactory: CookieXSRFStrategyFactory, 
}; 

然後,列出AppCSRF與您模塊的其他供應商。

providers: [ 
    ... 
    AppCSRF, 
    ... 
], 
相關問題