непонятные ошибки при работе с Angular дизайнером

Обсуждение Stimulsoft Reports.WEB
Ответить
edanilenko
Сообщения: 4
Зарегистрирован: 29 ноя 2023, 16:13

непонятные ошибки при работе с Angular дизайнером

Сообщение edanilenko »

Используется бэк, который лежит в отдельном от приложения Angular контейнере.

Первая ошибка. Если использовать приложение с вьювером и дизайнером, которое предоставляется в примере на github, то при вызове дизайнера кнопкой вьювера вываливается вот такая ошибка

{"headers":{"normalizedNames":{},"lazyUpdate":null,"headers":{}},"status":0,"statusText":"Unknown Error","url":"http://kube01.yc.ru/zif-reporting-sts/a ... age":"Http failure response for "http://kube01.yc.ru/zif-reporting-sts/a ... 807aae0b17: 0 Unknown Error","error":{"isTrusted":true}}

при этом в консоли видно, что https заменяется на http при запросе ресурсов, хотя указан URL к сервису с сипользованием SSL. Приложение само запускается с использованием https. Возможно есть какие-то настройки, которые меняют это поведение? Дальше, если запустить приложение без использования http, то сам скрипт дизайнера загружается, а дальше, при запросе ресурсов возникает ошибка CORS при внутреннем редиректе.

Вторая ошибка
При встраивании компонента дизайнера в Single SPA приложение, после инициализации в консоль браузера выводится ошибка Blockly is not defined. При этом дизайнер не работает.
edanilenko
Сообщения: 4
Зарегистрирован: 29 ноя 2023, 16:13

Re: непонятные ошибки при работе с Angular дизайнером

Сообщение edanilenko »

Проблема с http решилась добавлением в методы контроллера строки this.HttpContext.Request.Scheme = "https";
Vadim
Сообщения: 109
Зарегистрирован: 04 апр 2013, 12:26

Re: непонятные ошибки при работе с Angular дизайнером

Сообщение Vadim »

Здравствуйте.

1. Для настройки CORS можно использовать например метод (как в примерах) : app.UseCors(builder => builder.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod());

2. Какой пример вы используете? (возможно из-за CORS не получается загрузить ресурсы для дизайнера)
edanilenko
Сообщения: 4
Зарегистрирован: 29 ноя 2023, 16:13

Re: непонятные ошибки при работе с Angular дизайнером

Сообщение edanilenko »

Здравствуйте,
с CORS все порешали, там была проблема именно в схеме HttpContext на бэке.

По Blockly, при встраивании компонента дизайнера в SPA (библиотека Single-SPA) без iframe возникает ошибка "Blockly is not defined", после инициализации дизайнера и скачивания скрипта. Наши исследования показали, что, если поместить компонент дизайнера в iframe, то ошибка не возникает. На наш взгляд, использования iframe не является правильным подходом.
Пример кода встраивания компонента:

Код: Выделить всё

@NgModule({
  imports: [...ReportStsComponent]
}) export class AppModule


@Component({
  selector: 'report-book-sts',
  templateUrl: './report-book-sts.component.html',
  styleUrls: ['./report-book-sts.component.less'],
  standalone: true,
  imports: [
    CommonModule,
    ...,
    StimulsoftViewerModule,
    StimulsoftDesignerModule,
  ],
  providers: [...],
})
export class ReportStsComponent {
  @ViewChild('stsDesigner')
  private designer: StimulsoftDesignerComponent | undefined;
  @ViewChild('stsViewer')
  private viewer: StimulsoftViewerComponent | undefined;
  ...
}

// html 

  <ng-container *ngIf="reportId">
      <stimulsoft-designer-angular
        #stsDesigner
        *ngIf="viewMode === 'editor'"
        [requestUrl]="designerRequestUrl"
        [height]="'100%'"
        [width]="'100%'"
        (designerLoaded)="stsDesigner.designerEl.nativeElement.style.height='100%'; designerLoaded()"
        class="report-book-sts__designer"
      ></stimulsoft-designer-angular>
      <stimulsoft-viewer-angular
        #stsViewer
        *ngIf="viewMode === 'viewer'"
        [requestUrl]="viewerRequestUrl"
        [action]="'InitViewer'"
        [properties]="properties"
        [height]="'100%'"
        [width]="'100%'"
        (loaded)="viewerLoaded()"
        (error)="viewerError()"
        (design)="changeViewMode('editor')"
        class="report-book-sts__viewer"
      ></stimulsoft-viewer-angular>
    </ng-container>

Пример встраивания в Single-SPA:

Код: Выделить всё

const lifecycles = singleSpaAngular({
  bootstrapFunction: singleSpaProps => {
    singleSpaPropsSubject.next(singleSpaProps);
    return platformBrowserDynamic(getSingleSpaExtraProviders()).bootstrapModule(AppModule);
  },
  template: '<rpe-root />',
  Router,
  NavigationStart,
  NgZone,
});
Vadim
Сообщения: 109
Зарегистрирован: 04 апр 2013, 12:26

Re: непонятные ошибки при работе с Angular дизайнером

Сообщение Vadim »

Здравствуйте.

Вы можете посмотреть: без iFrame возможно некоторые запросы блокируются? в консоле есть ошибки?
Ответить