Universal Apps возвращает ошибки без объяснения причин - PullRequest
0 голосов
/ 07 октября 2018

У меня проблема с Angular 6 Universal App.На первый взгляд все выглядит хорошо, но когда я просматриваю логи на стороне сервера, я вижу много:

ERROR [Error]
ERROR [Error]
ERROR [Error]
ERROR [Error]
ERROR [Error]
ERROR [Error]
ERROR [Error]
ERROR [Error]
ERROR [Error]

Можно ли запустить приложение с более подробной информацией при отображении ошибки?

Я запускаю приложения из скрипта "dev" в package.json:

 "scripts": {
    "ng": "ng",
    "prestart": "npm run build:prod",
    "start": "node $npm_package_main",
    "build": "ng run ng-universal:udk",
    "build:prod": "ng run ng-universal:udk:production",
    "dev": "ng-udkc",
    "dev:spa": "ng serve --hmr",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e",
    "now-build": "ng run ng-universal:udk:production && gulp build-zip",
    "gulp": "gulp build-zip",
    "now-start": "node $npm_package_main"
  },

1 Ответ

0 голосов
/ 07 октября 2018

У меня была такая же проблема несколько дней назад.Эти ошибки являются HTTP-запросами, которые вернули код состояния не 200.

Можно ли запускать приложения с более подробной информацией при отображении ошибки?

С точки зрения NodeJ, я не думаю, что это так.Altough Universal пытается запустить угловое приложение, как если бы оно выполнялось в браузере.Таким образом, вы можете добавить HTTP-перехватчик и добавить некоторые журналы консоли внутри перехватчика, чтобы выяснить, какой URL не отвечает.

Вот небольшой пример:

export class HeadersInterceptor implements HttpInterceptor {
  //private translateService: TranslateService;

  constructor(@Inject(WINDOW) private window: Window, @Inject(LOCAL_STORAGE) private localStorage: any, private translateService: TranslateService, @Inject(PLATFORM_ID) private platform) {
    /*this.translateService = this.injector.get(TranslateService);*/
  }

  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    console.log(req);
    console.log(req.url);
    return next.handle(req);
  }

Не забудьтедобавить его в модуль.

Пример в core.module.ts:

providers: [
 {
      provide: HTTP_INTERCEPTORS,
      useClass: HeadersInterceptor,
      multi: true,
    },
]

Надеюсь, это поможет.

РЕДАКТИРОВАТЬ:

Мое решение не предоставит вам подробную информацию о причине ошибки.Я думал об этом, и вы, безусловно, можете сделать что-то вроде:

RxJS <6: </p>

 intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {

    return next.handle(request).do((event: HttpEvent<any>) => {}, (err: any) => {
      if (err instanceof HttpErrorResponse) {
        // do error handling here
      }
    });
  }

RxJS> = 6

  intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
 return next.handle(request).pipe(tap((success) => {

      }, (err) => {
        if (err instanceof HttpErrorResponse) {
          console.log(err.status);
        }
      }
    ));
 }

Тогда вы должны получить доступ кОшибка.Кроме того, этот код скопирован с hackernoon: https://hackernoon.com/global-http-error-catching-in-angular-4-3-9e15cc1e0a6b

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...