简体   繁体   English

AOT编译失败。 Angular2 RC6-不支持函数调用-RouterModule.forChild(ROUTES)

[英]AOT Compilation fails. Angular2 RC6 - Function call not supported - RouterModule.forChild(ROUTES)

Environment: Windows 10, IntelliJ 2016.2, node 环境: Windows 10,IntelliJ 2016.2,节点

  • Angular version: 2.0.0-rc.6 角版本: 2.0.0-rc.6

  • Language: [all | 语言: [全部| TypeScript XX | TypeScript XX | ES6/7 | ES6 / 7 | ES5] Typescript ES6 ES5]打字稿ES6

  • Node (for AoT issues): node --version = 节点(针对AoT问题): node --version =
    Node 4.4.7, NPM 3.10.6 节点4.4.7,NPM 3.10.6

The AOT compiler fails, complaining about a function call or lamba reference. AOT编译器失败,抱怨函数调用或lamba引用。 The only one is RouterModule.forChild(ROUTES), but previously it was able to compile with this reference. 唯一的是RouterModule.forChild(ROUTES),但以前它能够使用此引用进行编译。 I dont see how the app can work without the imported component. 我看不到没有导入的组件,应用程序如何工作。

// /**
//  * Angular 2 decorators and services
//  */
// // import { BrowserModule } from '@angular/platform-browser'
//
import { CommonModule } from '@angular/common';
import { BrowserModule } from '@angular/platform-browser';
import { RouterModule } from '@angular/router';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
//
import { ROUTES } from './detail.routes';

/*
 * Shared Utilities & Other Services
 */
import { Logging } from '../services/utility.service';

/**
 * Imported Components
 */
import { DetailComponent } from './detail.component';


@NgModule({
   declarations: [// Components / Directives/ Pipes
      DetailComponent],
   imports: [CommonModule, BrowserModule, FormsModule, RouterModule.forChild(ROUTES),]
})


export class DetailModule {

   constructor() {
      if (Logging.isEnabled.light) { console.log('%c Hello \"Detail\" component!', Logging.normal.lime); }
   }
}

The error is 错误是

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 DetailModule in C:/Source/POC/Microservice.Poc/src/app-components/+detail/index.ts, resolving symbol DetailModule in C:/Source/POC/Microservice.Poc/src/app-components/+detail/index.ts
    at simplifyInContext (C:\Source\POC\Microservice.Poc\node_modules\@angular\compiler-cli\src\static_reflector.js:473:23)
    at StaticReflector.simplify (C:\Source\POC\Microservice.Poc\node_modules\@angular\compiler-cli\src\static_reflector.js:476:22)
    at StaticReflector.annotations (C:\Source\POC\Microservice.Poc\node_modules\@angular\compiler-cli\src\static_reflector.js:61:36)
    at _loop_1 (C:\Source\POC\Microservice.Poc\node_modules\@angular\compiler-cli\src\codegen.js:53:54)
    at CodeGenerator.readFileMetadata (C:\Source\POC\Microservice.Poc\node_modules\@angular\compiler-cli\src\codegen.js:66:13)
    at C:\Source\POC\Microservice.Poc\node_modules\@angular\compiler-cli\src\codegen.js:100:74
    at Array.map (native)
    at CodeGenerator.codegen (C:\Source\POC\Microservice.Poc\node_modules\@angular\compiler-cli\src\codegen.js:100:35)
    at codegen (C:\Source\POC\Microservice.Poc\node_modules\@angular\compiler-cli\src\main.js:7:81)
    at Object.main (C:\Source\POC\Microservice.Poc\node_modules\@angular\tsc-wrapped\src\main.js:30:16)
Compilation failed

Why is RouterModule.forChild(ROUTES) making AOT compilation fail, when over here at this repo , it works fine with AOT compilation? 为什么RouterModule.forChild(ROUTES)使AOT编译失败, 在此 RouterModule.forChild(ROUTES) ,当它与AOT编译正常工作时?

The problem was solved by switching from RC6 builds to the github builds: 通过从RC6版本切换到github版本解决了该问题:

This: 这个:

  "@angular/compiler-cli": "github:angular/compiler-cli-builds",
  "@angular/common": "2.0.0-rc.6",
  "@angular/compiler": "2.0.0-rc.6",
  "@angular/core": "2.0.0-rc.6",
  "@angular/forms": "^2.0.0-rc.6",
  "@angular/http": "2.0.0-rc.6",
  "@angular/platform-browser": "2.0.0-rc.6",
  "@angular/platform-browser-dynamic": "2.0.0-rc.6",
  "@angular/platform-server": "2.0.0-rc.6",
  "@angular/router": "3.0.0-rc.2",

Was changed to 改为

"@angular/common": "github:angular/common-builds",
  "@angular/compiler": "github:angular/compiler-builds",
  "@angular/compiler-cli": "github:angular/compiler-cli-builds",
  "@angular/core": "github:angular/core-builds",
  "@angular/forms": "github:angular/forms-builds",
  "@angular/http": "github:angular/http-builds",
  "@angular/platform-browser": "github:angular/platform-browser-builds",
  "@angular/platform-browser-dynamic": "github:angular/platform-browser-dynamic-builds",
  "@angular/platform-server": "github:angular/platform-server-builds",
  "@angular/router": "github:angular/router-builds",
  "@angular/tsc-wrapped": "github:angular/tsc-wrapped-builds",

And it compiles fine now. 并且现在可以编译。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM