2016-10-10 89 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, 
    ... 
], 
相关问题