Сначала немного контекста: у нас есть проект Angular (назовите его «проект X»), который имеет свои json файлы перевода (загруженные с помощью ngx-translate). Затем этот проект переносится как Angular Elements (все это переносится в один js файл, назовите его «my-lib. js»). Другой проект («проект Y») динамически загружает этот скрипт, так что Angular Элементы проекта X могут использоваться внутри него. Project Y также использует собственные файлы перевода json, загруженные с помощью ngx-translate.
Project X создается в / dist, а файлы перевода json для проекта X копируются в / dist / i18n. Эта папка / dist затем обслуживается с помощью lite-сервера через порт 3003 (т. Е. http://localhost: 3003 ). В файле bs-config. json указан этот порт, а также "cors: true":
{
"port": 3003,
"files": ["./src/**/*.{html,htm,css,js,json}"],
"server": { "baseDir": "./dist" },
"cors": true
}
Затем также обслуживается проект Y ("ng serve"). Язык по умолчанию - Engli sh. Таким образом, файл en. json внутри проекта Y загружен правильно! Но ... файл en. json проекта X не ... "en. json" размещен на http://localhost: 3003 / i18n / en. json, и я можно получить доступ к нему по URL. Но в рамках проекта Y я получаю ошибку cors, как в:
Внутри проекта X модуль ngx-translate импортируется в AppModule следующим образом:
export function HttpLoaderFactory(httpClient: HttpClient) {
return new TranslateHttpLoader(httpClient, environment.production ? '/objt-lib/assets/i18n/' : (environment.staging ? 'http://localhost:3003/i18n/' : '/assets/i18n/'), '.json');
}
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserTransferStateModule,
BrowserModule,
AppRoutingModule,
...
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: HttpLoaderFactory,
deps: [HttpClient],
}
}),
BrowserAnimationsModule
],
providers: [
...
],
bootstrap: environment.production ? [] : [AppComponent]
})
// export class AppModule { }
export class AppModule implements DoBootstrap {
....
}
Внутри проекта Y он импортируется следующим образом:
export function HttpLoaderFactory(httpClient: HttpClient) {
return new TranslateHttpLoader(httpClient, '/assets/i18n/', '.json');
}
@NgModule({
declarations: [
AppComponent,
],
imports: [
AppRoutingModule,
...
BrowserAnimationsModule,
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: HttpLoaderFactory,
deps: [HttpClient]
}
}),
HttpClientModule
],
providers: [
...
],
bootstrap: [AppComponent]
})
export class AppModule {
constructor() {
}
}
Почему я получаю ошибку cors? Заранее спасибо!