Angular 13 找不到模块“@angular/common/locales/fr.js”

Yva*_*van 6 webpack angular angular13

我从角度 12 移动到角度 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);
});
Run Code Online (Sandbox Code Playgroud)

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

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

有什么解决办法吗?

小智 6

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

前:

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

后:

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

使用 Angular 13.1.1 和 NX 13.4.2

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


ebr*_*ult -1

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

Angular 13 之前:

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

registerLocaleData(localeFr, 'fr-FR');
Run Code Online (Sandbox Code Playgroud)

使用 Angular 13:

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

// and you can use fr-FR whenever you want
Run Code Online (Sandbox Code Playgroud)