簡體   English   中英

Angular Material或Package Format 4.0的AOT編譯失敗

[英]AOT compile fails for Angular Material or Package Format 4.0

當我導入Angular Material(或任何其他Package Format 4.0模塊)時,AOT編譯失敗。

 import { NgModule, ModuleWithProviders } from '@angular/core'; import {MdButtonModule, MdCheckboxModule} from '@angular/material'; @NgModule({ imports: [ MdButtonModule, MdCheckboxModule ], exports: [ MdButtonModule, MdCheckboxModule ] }) export class NorSharedModule { static forRoot(): ModuleWithProviders { return { ngModule: NorSharedModule }; } } 

當我用AOT編譯時,為Angular Material生成的ngfactory文件會創建周期性導入。

index.ngfactory.ts

/**
 * @fileoverview This file is generated by the Angular template compiler.
 * Do not edit.
 * @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride}
 */
 /* tslint:disable */

import * as i0 from '@angular/core';
import * as i1 from '@angular/material';
import * as i2 from '@angular/common';
import * as i3 from '@angular/platform-browser';
import * as i4 from './index.ngfactory';
import * as i5 from '@angular/forms';
import * as i6 from '@angular/http';
export const MdCoreModuleNgFactory:i0.NgModuleFactory<i1.MdCoreModule> = i0.ɵcmf(i1.MdCoreModule,

當然,這中斷了構建過程的下一步。 匯總無法捆綁。

[8:51:38] LOG ngc started compiling ngfactory
[8:51:50] LOG ngc compiled /ngfactory 
[8:51:50] LOG Rollup started bundling ngfactory
Error: A module cannot import itself
ngfactory/node_modules/@angular/material/typings/index.ngfactory.js (5:0)
3: import * as i2 from '@angular/common';
4: import * as i3 from '@angular/platform-browser';
5: import * as i4 from './index.ngfactory';
   ^
6: import * as i5 from '@angular/forms';
7: import * as i6 from '@angular/http';

這在4.2.0-rc.24.2.0復制。

這已在此處修復。

您可以將@angular/compiler@angular/compiler-cli4.3.0-beta.0

但是,您會發現一個新問題...

(function (exports, require, module, __filename, __dirname) { import * as i0 from '@angular/core';
SyntaxError: Unexpected token import

編輯

您可以在此處關注第二期

這很可能是Package Format 4.0,tsickle和ngfactories的錯誤,我已將其提交給Angular團隊。 有一種解決方法。

運行ngc之后,找到每個庫的ngfactory文件,復制該文件,並使用后綴.imports.js重命名,然后在原始ngfactory中導入新文件。 這將刪除周期性導入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM