NX Serve 忽略导入“@angular/localize/init”

nx serve is ignoring import of "@angular/localize/init"

提问人:Christian 提问时间:11/16/2023 最后编辑:Christian 更新时间:11/23/2023 访问量:75

问:

我正在尝试在我的项目中实现,该项目是 Nx 工作区的一部分 ([email protected])。我正在遵循官方指南:https://angular.io/guide/i18n-overview@angular/localize

具体来说,我

  • 安装了与我当前 Angular 版本一致的版本的版本@angular/[email protected]

  • 添加到我的polyfills.tsimport '@angular/localize/init'

  • 添加到我的main.ts/// <reference types="@angular/localize" />

  • 将 i18n 配置添加到我的项目配置中:

    "i18n": {
      "sourceLocale": "en",
      "locales": {
        "de": {
          "translation": "apps/web/login/src/locale/messages.de.xlf"
        }
      }
    }
    
  • 配置了构建目标

    ...
    "aot": true,
    "localize": ["de"]
    ...
    

当我这个项目时,我希望我的字符串本地化为 .但是,我收到以下错误nx servede

错误:您的应用程序或其依赖项之一似乎正在使用 i18n。 Angular 9 引入了一个需要加载的全局函数。 请从 Angular CLI 运行。 (对于非 CLI 项目,请添加到您的文件中。$localize()ng add @angular/localizeimport '@angular/localize/init';polyfills.ts

当我检查我的 polyfills.js bundle 文件时,我看到 webpack 显然忽略了它的导入,这解释了应用程序中缺少的 $localize 函数。@angular/localize/init

...
/***/ 85028:
/*!****************************************!*\
  !*** @angular/localize/init (ignored) ***!
  \****************************************/
/***/ (() => {

/* (ignored) */

/***/ }),
...

我怎样才能让 webpack 不忽略这个导入并让它工作?

使用提取标签效果很好。@angular-devkit/build-angular:extract-i18n

我尝试重新安装 node_module以确保版本正确,并查找了 github 问题以找到答案 - 没有成功

角度 国际化 NRWL-NX

评论


答:

0赞 Christian 11/23/2023 #1

郑重声明:我遇到了一个问题,即过时的browserslist配置阻止了它的工作:https://github.com/angular/angular/issues/48194

基本上我已经配置了,而 angular 官方只支持最新的两个主要版本。我把它改成了,现在一切正常。safari >= 12safari >= 15

我只花了 7 天的时间研究......