我有一个带有针对ES6的.tsconfig文件的角度应用程序。
{
"compileOnSave": false,
"compilerOptions": {
"allowJs": true,
"baseUrl": "./",
"outDir": "./dist/out-tsc",
"sourceMap": true,
"declaration": false,
"module": "es2015",
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es6",
"typeRoots": [
"node_modules/@types"
],
"lib": [
"es2017",
"dom",
"es2018.promise"
]
}
}
以下角度分量(打字稿):
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { HttpClientModule } from '@angular/common/http';
import { DispositifsDATIRoutingModule } from './dispositifsDATI.routes';
import { SharedModule } from '../shared/shared.module';
import { DISPOSITIFS_DATI_COMPONENTS } from './index';
import { InputUtilitiesModule } from 'ng-uikit-pro-standard';
import { MaterialChipsModule, BadgeModule, IconsModule, WavesModule } from 'ng-uikit-pro-standard';
@NgModule({
imports: [
CommonModule,
FormsModule,
ReactiveFormsModule,
SharedModule,
HttpClientModule,
DispositifsDATIRoutingModule,
InputUtilitiesModule,
MaterialChipsModule,
BadgeModule,
IconsModule,
WavesModule
],
declarations: [DISPOSITIFS_DATI_COMPONENTS]
})
export class DispositifsDATIModule { }
由webpack编译为:
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DispositifsDATIModule", function() { return DispositifsDATIModule; });
在运行时失败的原因:
ReferenceError:初始化之前无法访问'DispositifsDATIModule'
我不知道这是怎么回事。
围绕ES6的使用,webpack配置中是否需要更改?
编辑:这似乎是angular和/或TypeScript中有关ES2015的问题
答案 0 :(得分:0)
我想您这里有循环依赖项,您的组件文件(假设它是MyComponent.ts
)从DISPOSITIFS_DATI_COMPONENTS
导入./index.ts
,而index.ts
从{ {1}}。
所以他们彼此依赖。在这种情况下,./MyComponent.ts
不能在使用时初始化。
为了避免循环依赖,我将其提取到第三个文件
UPD:这是一篇有用的文章https://blog.angularindepth.com/how-to-break-a-cyclic-dependency-between-es6-modules-fd8ede198596
答案 1 :(得分:0)
好的,此错误是由于我引用使用TypeScript装饰器的模块引起的。 我删除了装饰器,转而使用等效的API,问题消失了。