我正在尝试部署一个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
任何帮助将不胜感激!
答案 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)
这是我解决类似问题的途径:
答案 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配置文件中(如果没有该文件,则必须在网站根文件夹中创建它)。
我们欢迎...