Angular 找不到 7 个 prod build i18n 文件

Angular 7 prod build i18n files not found

我正在尝试部署 Angular 7 应用程序,该应用程序使用 /dist/assets 文件夹中的 ngx-translate 和翻译语言文件。我在构建中指定了正确的基本 href。部署后,我看到所有内容都加载了,除了语言文件 returns 错误代码 404(未找到)。

我试过用几种不同的方式更改 angular.json 文件。我尝试更改 TranslateHttpLoader。似乎没有任何效果。我可以在 /dist 文件夹中看到包含所有语言文件的 i18n 文件夹。但是它没有被引用。

在app.module.ts

export function HttpLoaderFactory(httpClient: HttpClient) {
  return new TranslateHttpLoader(httpClient, './assets/i18n/', '.json');
}

在angular.json

"assets": [
  "src/favicon.ico",
  "src/assets"
],

但我最终在浏览器中收到此错误:

/assets/i18n/en.json 404 未找到

如有任何帮助,我们将不胜感激!

你导入AppModule了吗?

export function HttpLoaderFactory(httpClient: HttpClient) {
    return new TranslateHttpLoader(httpClient, './assets/i18n/', '.json');
}

@NgModule({
    imports: [
        BrowserModule,
        HttpClientModule,
        TranslateModule.forRoot({
            loader: {
                provide: TranslateLoader,
                useFactory: HttpLoaderFactory,
                deps: [HttpClient]
            }
        })
    ],
    bootstrap: [AppComponent]
})
export class AppModule { }

我遇到了和你一样的问题,我相信它与这个命令有关:

ng build --prod

尝试使用这个命令:

ng build --base-href=/deployed_app_name/ --prod

例如,如果您部署的应用程序名称是:Whosebug 命令应该是这样的:

ng build --base-href=/Whosebug/ --prod

在这里您将拥有指向您的 i18n json 文件的正确路径

这是我解决类似问题的路径:

  1. 检查404错误的文件是否在dist文件夹的正确路径中,如果不正确,请确认angular.json中所有资产参数是否正常。
  2. 将 base-ref 参数验证为:
  3. 然后查看 environment.prod.ts(或 environment.ts 等)的 i18n 参数中的值是否正确

Angular 9.0.4 我遇到了同样的问题。

只有当我在路径中有一个点斜杠前缀作为 ./assets/i18n/ 时,问题才会得到解决:

export function HttpLoaderFactory(http: HttpClient) {
  return new TranslateHttpLoader(http, './assets/i18n/');
}

我遇到了和你一样的问题, 在我的例子中,它在我的本地 IIS 服务器上工作得很好,但它为实时 IIS 服务器抛出 404(i18n/en。json 未找到 404)。

兜兜转转,以为是angular i18n路径错误。 最后归结为服务器问题。

默认情况下 IIS 服务器将只允许少数文件扩展名类型。 您必须为 json 文件(来自网络配置文件)手动添加 mimeType。

<staticContent>
  <remove fileExtension=".json"/>
  <mimeMap fileExtension=".json" mimeType="application/json"/>
</staticContent>

我将其添加到网络配置文件中(如果文件不存在,您必须在网站根文件夹中创建它)。

欢迎...