未找到 Angular 7 prod build i18n 文件

npa*_*s18 4 ngx-translate ng-build angular7

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

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

在 app.module.ts

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

在 angular.json 中

"assets": [
  "src/favicon.ico",
  "src/assets"
],
Run Code Online (Sandbox Code Playgroud)

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

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

任何帮助,将不胜感激!

Ste*_*ane 6

Angular 9.0.4我面临同样的问题。

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

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


小智 3

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

ng build --prod
Run Code Online (Sandbox Code Playgroud)

尝试使用这个命令:

ng build --base-href=/deployed_app_name/ --prod
Run Code Online (Sandbox Code Playgroud)

例如,如果您部署的应用程序名称是:stackoverflow 命令应如下所示:

ng build --base-href=/stackoverflow/ --prod
Run Code Online (Sandbox Code Playgroud)

在这里你将获得 i18n json 文件的正确路径