asp.net Core Angular4 angular/common/http не найден

Мой вопрос похож на https://stackoverflow.com/questions/45207615/cannot-find-the-angular-common-http-module и https://stackoverflow.com/questions/45325515/error-loading-angular-common-http-angular-2 но проблема немного в другом: я использую Angular 4.3.5 и пытаюсь читать данные из веб-API. (Этот API выводит данные JSON и использует SignalR и .net Core). Я выполнил несколько руководств и придумал этот код для класса, который фактически свяжется со службой:

import 'rxjs/add/operator/map';

import { HttpClient, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import { Configuration } from './Configuration.js';

@Injectable()
export class DataService {
  private actionUrl: string;

  constructor(private http: HttpClient, private configuration: Configuration) {
    this.actionUrl = configuration.serviceUrl;
  }

  //public getAll<T>(): Observable<T> {
  //  return this.http.get<T>(this.actionUrl);
  //}

  public getSingle<T>(id: number): Observable<T> {
    return this.http.get<T>(this.actionUrl + id);
  }
}

@Injectable()
export class CustomInterceptor implements HttpInterceptor {

  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    if (!req.headers.has('Content-Type')) {
      req = req.clone({ headers: req.headers.set('Content-Type', 'application/json') });
    }

    req = req.clone({ headers: req.headers.set('Accept', 'application/json') });
    console.log(JSON.stringify(req.headers));
    return next.handle(req);
  }
}

Теперь сборка этого проекта (я использую Visual Studio 2017 Enterprise) и запуск задачи gulp для переноса .ts в .js работает просто отлично, так же как и все всплывающие подсказки intellisense - IDE распознает существование этих вещей. Но если я открою его в браузере (неважно, Firefox, Edge или Chrome), я получаю следующую ошибку: zone.js:958 GET http://localhost:3966/libs/@angular/common/bundles/common.umd.js/http 404 (Not Found)

Если я отредактирую транспилированный файл javascript вручную и напишу там common-http.umd.js, файл будет найден. (Это причина, по которой вверху я импортирую Configuration.js вместо Configuration - похоже, он не хочет автоматически разрешать суффикс, как в некоторых учебниках). Надеюсь, я не слишком расплывчата, так как я впервые спрашиваю о чем-то публично. Также я не смог найти ответ на заданные вопросы.


person MPoutanen    schedule 01.09.2017    source источник


Ответы (1)


Что ж, я нашел решение для всех, кому интересно, почему существуют эта и подобные проблемы: мне пришлось отредактировать файл systemjs и добавить эту строку:

'@angular/common/http': 'npm:@angular/common/bundles/common-http.umd.js',

и это работает!

person MPoutanen    schedule 04.09.2017