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-tooltips - 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