找不到Angular 7 prod build i18n文件

时间:2019-05-21 16:42:53

标签: angular7 ngx-translate ng-build

我正在尝试部署一个Angular 7应用程序,该应用程序在/ dist / assets文件夹中使用ngx-translate和翻译的语言文件。我在构建中指定了正确的基本href。部署后,除了语言文件返回错误代码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

任何帮助将不胜感激!

5 个答案:

答案 0 :(得分:3)

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

仅当我在路径中使用./assets/i18n/的斜杠前缀时,问题才能得到解决:

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

答案 1 :(得分:1)

我遇到了与您相同的问题,我相信它与以下命令有关:

 $selectInt = \DB::table('forums')
   ->where('category', '=', $whatever)
   ->andWhereIn('community', [...])
   ->orderByRaw('id ASC')
   ->get();

尝试使用此命令:

ng build --prod

例如,如果您部署的应用程序名称为:ng build --base-href=/deployed_app_name/ --prod 命令应该是这样的:

stackoverflow

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

答案 2 :(得分:0)

您已导入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 { }

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

我遇到了和你一样的问题, 就我而言,它在我的本地IIS服务器中完全可以正常运行,但是它为实时IIS服务器抛出404(找不到i18n / en.json 404)。

我走来走去,认为这是一个角度i18n路径错误。 最后,归结为服务器问题。

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

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

我将此添加到了Web配置文件中(如果没有该文件,则必须在网站根文件夹中创建它)。

我们欢迎...