【问题标题】:Angular 9 introduced a global '$localize()' function that needs to be loadedAngular 9 引入了需要加载的全局“$localize()”函数
【发布时间】:2020-01-17 01:58:45
【问题描述】:

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

Installed Packages and its versions

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

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

【问题讨论】:

  • 您的问题到底是什么?错误消息清楚地说明了该怎么做。

标签: angular localization angular9


【解决方案1】:

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

npm install @angular/localize --save

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

【讨论】:

  • 我在为 ngcc 添加安装后步骤后使用 Jest 运行单元测试时收到此错误,正如此答案所建议的 - stackoverflow.com/a/63727427。 @angular/localize 是我的 package.json 中的一个依赖项,@angular/localize/init 是我的 polyfills.ts 中的一个导入项,但在大多数测试套件上都存在同样的错误。我正在运行 Angular 9。关于如何解决的任何建议?
  • 如果其他人有这个问题,我很抱歉刚刚找到答案 - github.com/just-jeb/angular-builders/issues/…
  • 对我来说,我需要使用--skip-confirmation 标志:npm install @angular/localize --skip-confirmation --save。否则我得到an error "未检测到终端。'--skip-confirmation' 可用于绕过安装确认。在使用'--skip-confirmation' 选项之前确保包名称正确。"
【解决方案2】:

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

ng add @angular/localize

它会自动处理它

否则

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

Angular 9测试

【讨论】:

  • 它会自动将其添加到 package.json 中并使用 'ng add...' 吗?
【解决方案3】:

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

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

【讨论】:

  • 被低估的答案。官方指南中从未提及这一点。
  • 我怀疑这个答案可能拯救了我的一天和我的理智。
  • 在我的情况下,ng add 也没有将它添加到 polyfills.ts。谢谢你。
  • 这个答案为我节省了很多时间。我的默认项目已经导入,因此 CLI 报告非常具有误导性:“跳过安装:包已安装无事可做。”
【解决方案4】:

如果你正在运行ng test,上面的答案不起作用,安装包并添加

import "@angular/localize/init"

polyfills-test.ts

【讨论】:

  • 好点在这里,也是一个带有特定 ts 文件的设置用于测试。也需要更新
【解决方案5】:

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

从 Angular CLI 运行 ng add @angular/localize

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

【讨论】:

    【解决方案6】:

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

    【讨论】:

    • 我希望这个答案更高,这正是我在内部库中遇到的问题,必须在 test.ts 中添加导入,否则它不会让步。
    【解决方案7】:

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

    CLI 为您提供了一个示意图。只需运行: ng 添加@angular/localize

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

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

    【讨论】:

    • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
    • @THess 感谢您的建议,我已经更新了答案并分享了链接以供参考。
    【解决方案8】:

    最好的方法是使用 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",
        ...    
    }
    

    【讨论】:

      【解决方案9】:

      你必须添加这个包

      ng add @angular/localize
      

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

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

      【讨论】:

      • 我仍然收到这个错误,我已经删除了扩展并清理了缓存和 %appdata% 文件夹:(
      【解决方案10】:

      运行

      npm install @angular/localize --save
      

      那么,在你的polyfills.ts

      import '@angular/localize/init' 
      

      这对我有用

      【讨论】:

        【解决方案11】:

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

        【讨论】:

          【解决方案12】:

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

          import "@angular/localize/init";
          

          【讨论】:

            猜你喜欢
            • 2020-06-10
            • 1970-01-01
            • 2012-04-03
            • 2020-04-11
            • 1970-01-01
            • 2020-09-24
            • 2020-09-25
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多