无法静态确定值 'window'
A value 'window' cannot be determined statically
在我的 Angular 12 应用程序中,我有一个类似
的模块
@NgModule({
imports: [ window.config.myConfXY ? ModuleX : ModuleY ],
providers: [ ... ],
declarations: [ ]
})
export class AppModule { }
但编译器抱怨:“'window' 的值无法静态确定,因为它是外部声明。”
我正在尝试在传入一些环境变量的 nginx 容器中部署应用程序。生成的“env.js”在 index.html 中被引用并定义了 window.config
.
错误是什么意思,我该如何解决?不幸的是,关于网络上的错误描述,我没有发现任何有用的信息。
据我了解,这不可能。
Angular 编译器需要在构建时本身评估 NgModule imports
即它需要静态评估条件。它需要在编译期间知道该值,并且不能等到运行时才评估这些值。编译器无法在编译期间了解 window
对象值。
考虑到我们没有在应用程序中自己声明 window
对象并且 Angular 无法在编译时确定其值,因此出现以下错误:
A value for 'window' cannot be determined statically, as it is an external declaration.
一种可能的解决方案是使用环境文件。我们在 angular.json 文件中有 fileReplacements
,因此我们可以在环境文件中定义配置 属性。由于我们可以根据不同的环境拥有多个文件,因此在构建期间,编译器应该能够静态评估环境配置 属性 值。
资源:
在我的 Angular 12 应用程序中,我有一个类似
的模块@NgModule({
imports: [ window.config.myConfXY ? ModuleX : ModuleY ],
providers: [ ... ],
declarations: [ ]
})
export class AppModule { }
但编译器抱怨:“'window' 的值无法静态确定,因为它是外部声明。”
我正在尝试在传入一些环境变量的 nginx 容器中部署应用程序。生成的“env.js”在 index.html 中被引用并定义了 window.config
.
错误是什么意思,我该如何解决?不幸的是,关于网络上的错误描述,我没有发现任何有用的信息。
据我了解,这不可能。
Angular 编译器需要在构建时本身评估 NgModule imports
即它需要静态评估条件。它需要在编译期间知道该值,并且不能等到运行时才评估这些值。编译器无法在编译期间了解 window
对象值。
考虑到我们没有在应用程序中自己声明 window
对象并且 Angular 无法在编译时确定其值,因此出现以下错误:
A value for 'window' cannot be determined statically, as it is an external declaration.
一种可能的解决方案是使用环境文件。我们在 angular.json 文件中有 fileReplacements
,因此我们可以在环境文件中定义配置 属性。由于我们可以根据不同的环境拥有多个文件,因此在构建期间,编译器应该能够静态评估环境配置 属性 值。
资源: