Angular 9引入了一个全局的'$localize()'函数,需要加载。

88
我在我的新angular项目设置中遇到了以下错误。 已安装的软件包及其版本 错误:未捕获(在承诺中):错误:看起来您的应用程序或其依赖项之一正在使用i18n。 Angular 9引入了一个全局$localize()函数,需要加载它。请将import '@angular/localize';添加到您的polyfills.ts文件中。
注意:我来自以下链接。它建议退回到旧版本。 https://github.com/angular/angular/issues/32508

你的问题是什么?错误信息提供了明确的操作说明。 - JJJ
18个回答

3

当我运行npm test时,出现了这个错误,所以上面的解决方案没有帮助。为了解决这个问题,我不得不在jest.ts文件中导入本地化。 只需添加:

import "@angular/localize/init";

2

现在,由于i18n属性已经被转换为$localize调用,我们需要加载$localize函数。

CLI提供了一个原理图来为您完成此操作。只需运行: ng add @angular/localize

它将把该软件包添加到您的依赖项并将必要的导入添加到您的polyfills(import '@angular/localize/init')

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


2
虽然这个链接可能回答了问题,但最好在此处包含答案的基本部分并提供参考链接。仅有链接的答案如果链接页面发生更改可能会变得无效。 - THess
@THess 感谢您的建议,我已经更新了答案并分享了参考链接。 - Anshita Singh

2
我因为这个问题更改了我的操作系统。昨天我找到了这个问题的原因。我遇到这个问题是由于我在Visual Studio Code中安装了一个插件。如果您正在使用Angular9,请不要安装前两个插件。您可以安装第三个插件。
请点击enter image description here查看图片。

2

所以,在我的情况下,我尝试使用@ng-bootstrap/ng-bootstrap来处理Angular v15。

经过长时间的调查,我创建了一个新的Angular v14项目:

npx -p @angular/cli@14.2.0 new hello-world

并安装

@ng-bootstrap/ng-bootstrap

好的,我完成了!

因此,我在根目录 /src 中创建了 polyfills.ts。

然后更新了 angular.json 文件:

projects/architect/build/polyfills: ["zone.js", "src/polyfills.ts"],

并且

projects/architect/test/polyfills: ["zone.js", "zone.js/testing", "src/polyfills.ts"],

in tsconfig.app.json:

{
  "extends": "./tsconfig.json",
  "compilerOptions": {
    "outDir": "./out-tsc/app",
    "types": [
      "node"
    ]
  },
  "files": [
    "src/main.ts",
    "src/polyfills.ts" <- add this
  ],
  "include": [
    "src/**/*.d.ts"
  ]
}

在 tsconfig.spec.json 中相同:

{
  "extends": "./tsconfig.json",
  "compilerOptions": {
    "outDir": "./out-tsc/spec",
    "types": [
      "jasmine",
      "@angular/localize"
    ]
  },
  "files": [
    "src/polyfills.ts" <- add this
  ],
  "include": [
    "src/**/*.spec.ts",
    "src/**/*.d.ts"
  ]
}

是的,就是这样,它适用于Angular 16.2.0。谢谢! - undefined

0

在 polyfill 中替换这个:

import '../node_modules/@angular/localize/init';

用这个:

import '@angular/localize/init';

一切都很好!


0
如果您正在使用Angular Universal(SSR),则只需在server.ts文件的第1行添加import '@angular/localize/init';
就是这样。

0

当您切换到不同的i18n库并且没有正确清理项目时,可能会出现此错误消息,例如在使用默认的@angular/localize包的情况下删除所有出现的i18n


0

我在polyfill.ts文件中使用了import '@angular/localize/init';,但错误实际上出现在其他地方!我只是把它放在这里,以防对某人有所帮助!

我的项目中有一个.browserlistrc文件,其中的规则集破坏了Angular i18n。在我的情况下,我必须从列表中删除>0.3%才能使其正常工作!

祝你拥有愉快的一天!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接