Angular 9引入了一个全局'$本地化();需要加载的函数

Angular 9引入了一个全局'$本地化();需要加载的函数,angular,localization,angular9,Angular,Localization,Angular9,我在新的角度项目设置中遇到以下错误 错误:未捕获(在承诺中):错误:它看起来像你的 应用程序或其依赖项之一正在使用i18n。角度9 引入了需要加载的全局$localize()函数。 请添加import'@angular/localize'到polyfills.ts文件。 错误:看起来您的应用程序或其依赖项之一是 使用i18n。Angular 9引入了一个全局$localize()函数 需要加载 注:我来自以下国家。这意味着回到旧版本。 您需要首先确保拥有@angular/localize包:

我在新的角度项目设置中遇到以下错误

错误:未捕获(在承诺中):错误:它看起来像你的 应用程序或其依赖项之一正在使用i18n。角度9 引入了需要加载的全局
$localize()
函数。 请添加
import'@angular/localize'到polyfills.ts文件。
错误:看起来您的应用程序或其依赖项之一是
使用i18n。Angular 9引入了一个全局
$localize()
函数 需要加载

注:我来自以下国家。这意味着回到旧版本。

您需要首先确保拥有@angular/localize包:

npm安装@angular/localize——保存


然后,
import'@angular/localize/init'
在您的polyfills.ts文件中,就像错误所说的那样,

angular 9引入了一个全局$localize()函数,如果您使用i18n,则需要加载该函数

从angular CLI运行
ng add@angular/localize

然后确保您有:
-
@angular/localize
作为应用程序包中的依赖项。json

-
import'@angular/localize/init'
在polyfills.ts中

由于i18n属性现在在生成的代码中转换为$localize调用,我们需要加载$localize函数

CLI提供了一个原理图来为您执行此操作。简单运行: ng添加@angular/localize

它会将包添加到依赖项中,并将必要的导入添加到polyfills中(导入“@angular/localize/init”)

您还可以参考以下链接以了解更多说明。
如果使用Angular CLI,最好的方法是运行

ng添加@angular/localize

它会自动处理的

否则

import'@angular/localize/init'到您的
polyfills.ts

import '@angular/localize/init' 

如果在同一工作区中有多个Angular项目正在运行,请使用
Angular 9

进行测试
ng添加@angular/localize
将添加导入语句
import'@angular/localize/init'
对于默认项目中的polyfills.ts,我认为这将在以后的更新中修复


因此,您需要将
import'@angular/localize/init'
手动添加到其他项目中的polyfills.ts。

如果您正在运行
ng test
而上述答案不起作用,请安装软件包并添加

import“@angular/localize/init”


polyfills test.ts

执行此操作的最佳方法是使用Angular CLI:

import '@angular/localize/init' 
您只需在终端中运行以下命令:

ng add @angular/localize
它将自动安装软件包,还将在polyfills.ts文件中添加导入语句

进口声明如下:

import '@angular/localize/init';
如果不想使用CLI方法,则可以在polyfills.ts文件中手动输入导入语句。 另外,您还需要做的一个步骤是在package.json的dependencies标记下添加以下行

"dependencies":{
    ...
    "@angular/localize":"^9.1.0",
    ...    
}

在我将带有多个子应用程序的大型Nx/Angular CLI应用程序升级到Angular 10后,开始出现此错误。如果应用程序包含多个应用程序,则错误中建议的解决方案(请从angular CLI运行
ng add@angular/localize
)不起作用。每个自动生成的应用程序都有自己的
polyfill.ts
。我在每个polyfill.ts文件中手动添加了导入(
import'@angular/localize/init';
)。为了修复运行单元测试时的相同错误,我还必须在libs的test.ts文件中添加import。

您必须添加此包

ng add @angular/localize
然后添加
import'@angular/localize/init'
到您的
polyfills.ts

import '@angular/localize/init' 
但是如果库中的测试失败,则必须添加
import'@angular/localize/init'
到您的
测试。ts

运行

npm install @angular/localize --save
import '@angular/localize/init' 
然后,在您的
polyfills.ts

import '@angular/localize/init' 

这对我很有用

你的问题是什么?错误消息给出了关于如何操作的明确说明。虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接以供参考。如果链接页面发生更改,只有链接的答案可能无效。@谢谢您的建议,我已更新了答案并共享了链接以供参考。低估了答案。官方指南中从未提到过这一点。我怀疑这个答案可能拯救了我的一天和我的理智。就我而言,ng add也没有将其添加到polyfills.ts中。谢谢你的回答。这个答案帮我省了好几天的时间。我的默认项目已经导入,因此CLI报告非常误导:“跳过安装:软件包已安装,无需执行任何操作。”它是否会使用“ng add…”自动将其添加到Package.json中?是的,将添加它。这里的要点很好,还有一个安装程序,其中包含用于测试的特定ts文件。还需要更新我希望这个答案更高,这正是我在内部libs中遇到的问题,我必须在test.ts中添加导入,否则它将不会移动。我在为ngcc添加安装后步骤后使用Jest运行单元测试时出现了这个错误,正如这个答案所建议的-@angular/localize是my package.json中的一个依赖项,@angular/localize/init是my polyfills.ts中的一个导入项,但在大多数测试套件中都存在相同的错误。我正在跑步。关于如何解决这个问题有什么建议吗?对不起,如果其他人有这个问题,我刚刚找到了答案-