1

我从 angular 12 移动到 angular 13,我遇到了一个新错误。所以基本上我过去常常通过导入语言环境文件来加载用户的文化。

 const localeUri = `@angular/common/locales/${localeId}.js`;
return import(localeUri).then((module) => {
    logger.debug("Culture Angular : '" + localeId + "'");
    registerLocaleData(module.default);
}).catch((err) => {
    logger.fatal("culture not defined for angular", err);
});

此解决方案用于使用 angular12,但不再使用 angular13。Webpack 找不到任何语言环境。我尝试了在 github 上找到的一些解决方案,但没有任何积极的结果
https://github.com/highlightjs/highlight.js/issues/3223#issuecomment-953337602

https://github.com/angular/angular-cli/issues/22154

有什么解决办法吗?

4

2 回答 2

1

.js通过更改我们导入的路径并更改为来设法使其工作.mjs

前:

import(
  /* webpackInclude: /(de|de-AT|en|en-GB)\.js$/ */
  `@angular/common/locales/${locale}.js`
).then((module) => {
  registerLocaleData(module.default);
});

后:

import(
  /* webpackInclude: /(de|de-AT|en|en-GB)\.mjs$/ */
  `../../../../../../node_modules/@angular/common/locales/${locale}.mjs`
).then((module) => {
  registerLocaleData(module.default);
});

使用 Angular 13.1.1 和 NX 13.4.2

这里也已经提到了解决方案:https ://github.com/angular/angular-cli/issues/22154

于 2022-01-03T14:52:35.693 回答
0

您必须从@angular/common/locales/global/现在开始导入,并且registerLocaleData不再需要。

在 Angular 13 之前:

import { registerLocaleData } from '@angular/common';
import localeFr from '@angular/common/locales/fr';

registerLocaleData(localeFr, 'fr-FR');

使用 Angular 13:

import '@angular/common/locales/global/fr';

// and you can use fr-FR whenever you want
于 2021-11-15T14:25:39.503 回答