postで説明したMicrosoft.AspNetCore.SpaTemplatesをインストールし、dotnet new angular
を使用して新しいプロジェクトを作成しました。ベースサイトを稼働させて、うまく走っています。私はVisual Studio 2017を使用しています。Angular + .NETコアMVCアプリケーションでObservableを購読するときに "SyntaxError:予期しないトークン<JSON内の位置0"を取得
シンプルなhttp getでサービスを追加しました。データは正常に戻ってきます。私はObservableとして呼び出し元に返します。そこからObservableを購読し、データで何かをします。私が観察を購読する場合は、問題が立ち上がるところだ...、それは文句:
Exception: Call to Node module failed with error: SyntaxError: Unexpected token < in JSON at position 0
私が購読を追加そのようにそれが実行されることを購読し、せずに最初のサイトを実行すると奇妙なことがあります、HMRそれは何か、ブラウザを更新し、すべてがうまくいく。しかし、その後にブラウザを手動でリフレッシュするか、サイトを再実行しようとするたびに、エラーがスローされます。
コード:
home.component.ts:
import { Component, OnInit } from '@angular/core';
import { HomeService } from './home.service';
@Component({
selector: 'home',
templateUrl: './home.component.html'
})
export class HomeComponent implements OnInit {
constructor(private homeService: HomeService) {}
ngOnInit(): void {
this.homeService.getData(5)
.subscribe(res => console.log(res));
}
}
home.service.ts
import { Injectable } from '@angular/core';
import { Http, Response } from '@angular/http';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/map';
@Injectable()
export class HomeService {
private _apiUrl = 'http://localhost:1234/api';
constructor(private http: Http) { }
getData(count: number): Observable<any> {
return this.http
.get(`${this._apiUrl}/Foo/${count}`, { withCredentials: true })
.map(response => response.json())
}
}
私は、Web APIからのデータが有効なJSONであることを知っています。失敗する部分はObservableを購読しようとするときです。なぜそれが不平を言っているのかわかりません。私が次のようなことをすれば:
ngOnInit(): void {
console.log('observable', this.homeService.getData(5));
}
..それではObservableオブジェクトをコンソールに出力します。
アイデア?
あなたのapiはおそらく 'response.json()'を呼び出すことによってこのエラーをスローしてjasonデータを返さないでしょう。応答本体をjsonに変換していませんobservable mapのresponse.bodyをコンソールにしようとします –
私のデータにアクセスしているときローカルでは、私のapiUrlはlocalhostの情報を含んでいません。私の場合、このように見えます: 'private baseUrl = 'api/products';'単にURLを 'api'に変更するとどうなりますか? – DeborahK
@BabarBilal私がresponse.bodyを使用すると、 "プロパティ 'body'がタイプ 'Response'に存在しないというエラーが発生します。私は郵便配達でそれをテストするときapiが有効なJSONを返すことを知っています.. [{"var1":123、...}] – Jerms