75

我在新的 Angular 项目设置中遇到以下错误。

已安装的软件包及其版本

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

注意:我来自以下。它建议回退到旧版本。 https://github.com/angular/angular/issues/32508

4

13 回答 13

113

你需要先确保你有 @angular/localize 包:

npm install @angular/localize --save

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

于 2019-09-17T04:36:28.200 回答
43

如果您使用 Angular CLI,最好的方法是运行

ng add @angular/localize

它会自动处理它

要不然

import '@angular/localize/init';给你的polyfills.ts

经测试Angular 9

于 2020-02-10T19:21:23.510 回答
14

如果您在同一个工作区中有许多 Angular 项目,则运行 ng add @angular/localize 只会在默认项目中将 import 语句添加import '@angular/localize/init' 到 polyfills.ts,我认为这将在以后的更新中修复。

所以需要import '@angular/localize/init'在其他项目中手动添加到 polyfills.ts 中。

于 2020-02-13T22:21:34.553 回答
6

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

import "@angular/localize/init"

polyfills-test.ts

于 2020-03-23T09:42:12.083 回答
5

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

ng add @angular/localize从 Angular CLI运行。

然后确保你有:
-@angular/localize作为应用程序 package.json 中的依赖项
-import '@angular/localize/init'在你的 polyfills.ts 中

于 2019-10-24T09:00:12.283 回答
4

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

于 2020-09-23T19:19:10.233 回答
3

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

CLI 提供了一个示意图来为您执行此操作。只需运行:ng add @angular/localize

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

您也可以参考以下链接以获得更多解释。 https://blog.ninja-squad.com/2019/12/10/angular-localize/

于 2020-01-14T06:55:33.613 回答
3

最好的方法是使用 Angular CLI:

您只需在终端中运行以下命令:

ng add @angular/localize

它会自动安装包,还会在 polyfills.ts 文件中添加 import 语句。

导入语句是:

import '@angular/localize/init';

如果您不想通过 CLI 方法,则可以在 polyfills.ts 文件中手动输入导入语句。此外,您还需要在 package.json 的 dependencies 标签下添加以下行。

"dependencies":{
    ...
    "@angular/localize":"^9.1.0",
    ...    
}
于 2020-04-01T15:43:16.710 回答
1

你必须添加这个包

ng add @angular/localize

然后添加import '@angular/localize/init';到您的ployfills.ts

但是如果你的测试在库中失败,你必须添加import '@angular/localize/init';到你的test.ts

于 2020-12-21T15:24:06.763 回答
1

npm install @angular/localize --save

然后,在你的polyfills.ts

import '@angular/localize/init' 

这对我有用

于 2021-03-16T12:29:27.953 回答
1

由于这个问题,我改变了我的操作系统。昨天我找到了这个问题的原因。由于我在 Visual Studio Code 中安装了一个插件,我遇到了这个问题。如果您使用的是 Angular9,请不要安装前两个插件。您可以安装第三个。

在此处输入图像描述

于 2021-07-20T08:45:35.410 回答
0

对我来说,运行时出现此错误,npm test因此上述解决方案没有帮助。为了解决它,我必须在jest.ts文件中导入本地化。只需添加:

import "@angular/localize/init";
于 2022-01-01T15:32:53.817 回答
0

将 Angular 版本从 12 更新到 13 时出现此错误。我按照说明进行操作:

  1. 运行 ng add @angular/localize
  2. 在你的 polyfills.ts 中导入 '@angular/localize/init'

但这对我不起作用。我的模块中已经有 @angular/localize 并且在 polyfills.ts 文件中导入了,毕竟我的 Angular 12 应用程序工作正常。

为了解决这个问题,我不得不更新 "@ng-bootstrap/ng-bootstrap" 版本。鉴于过时的@ng-bootstrap/ng-bootstrap 版本和错误描述之间没有明显的联系,我希望这个建议可以避免一些人头疼。

于 2022-01-11T10:05:13.647 回答