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

问题描述 投票:0回答:4

我从角度 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);
});

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

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

有什么解决办法吗?

angular webpack angular13
4个回答
6
投票

设法通过更改我们导入的路径并将

.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


2
投票

最近,我迁移到了 Angular 13。我也遇到了同样的问题。以下更改对我有用。

import(`@/../@angular/common/locales/${lang}.mjs`)
.then(localModule => {
          registerLocaleData(localModule.default)
});

0
投票

我猜是因为 tsconfig.json 中的模块


-1
投票

您现在必须从

@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
© www.soinside.com 2019 - 2024. All rights reserved.