Angular 通用服务器错误:使用默认后备时,必须在配置中提供后备语言

Posted

技术标签:

【中文标题】Angular 通用服务器错误:使用默认后备时,必须在配置中提供后备语言【英文标题】:Angular universal server error: When using the default fallback, a fallback language must be provided in the config 【发布时间】:2020-07-21 10:05:03 【问题描述】:

我已经在我的应用程序上安装了 Angular Universal。 运行npm run build:s-s-r - 完成。作品。 运行npm run server:s-s-r - DONE.WORKS。

访问服务器URL(localhost:4000)后,页面未完全加载,终端报如下错误:

【问题讨论】:

你在使用 i18n 吗?你能显示你的 angular.json 文件吗? 已经设法修复它。 i18n 配置确实有问题。非常感谢。 【参考方案1】:

我也遇到了同样的问题,所以我想分享一下我的发现。

对我来说,有两个可能的原因/解决方案:

首先,在我的项目的 I18N 默认 JSON 文件 en.json 中,JSON 文件的结构存在问题。

例如,我犯了以下错误。我错过了第二个标签“FINISH”后的逗号:


"COMMON": 
    "EDIT": "Edit",
    "FINISH": "Finish"
    "QUIT": "Quit",
   

所以在更正结构后,应用程序运行良好,没有错误。

其次,问题的另一个原因可能是,在运行时 transloco 无法在所选语言中找到正确的标签,因此它寻找备用语言,甚至在 transloco-root.module 中都找不到.ts 所以在添加我的后备语言后,它会尝试在 transloco-root.module.ts 中指定的后备语言中找到相同的语言。

所以它发现了那个标签并且问题得到了解决。

但是在提供的第二个解决方案中,您至少需要在该后备语言的 json 文件中以正确的格式包含不正确的标签。

我添加了如下的后备语言:

useValue: translocoConfig(
            availableLangs: ['fr', 'en'],
            defaultLang: 'en',
            reRenderOnLangChange: true,
            fallbackLang: 'fr',
            prodMode: environment.production,
            missingHandler: 
                logMissingKey: true
            
        )

【讨论】:

【参考方案2】:

模块文件中没有完全配置 i18n Transloco。

【讨论】:

以上是关于Angular 通用服务器错误:使用默认后备时,必须在配置中提供后备语言的主要内容,如果未能解决你的问题,请参考以下文章

弹簧靴+角度部署

npm 错误!缺少脚本:构建:通用

带有 GRPC 的 Angular 通用

Angular 通用服务器渲染 WebSocket

Angular 5 ng-bootstrap 类型“ElementRef”不是通用错误

如何修复 PWA 审核中的“当 JavaScript 不可用时不提供后备内容”?