こんにちは:私は足を平均スタックに濡らしています。だから私はAngularを使用して私のmongodbデータベースに接続するapi.jsファイルに接続しています。しかし、私は次のエラーを取得しています:以下のようにエラーで参照されている解決方法:位置0のJSONで予期しないトークン<
ERROR SyntaxError: Unexpected token < in JSON at position 0
at JSON.parse (<anonymous>)
at Response.Body.json (http.es5.js:800)
at MapSubscriber.project (post.service.ts:19)
at MapSubscriber._next (map.js:77)
at MapSubscriber.Subscriber.next (Subscriber.js:89)
at XMLHttpRequest.onLoad (http.es5.js:1229)
at ZoneDelegate.invokeTask (zone.js:424)
at Object.onInvokeTask (core.es5.js:4140)
at ZoneDelegate.invokeTask (zone.js:423)
at Zone.runTask (zone.js:191)
post.service.tsファイルは次のとおりです。
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import 'rxjs/add/operator/map';
@Injectable()
export class PostService {
result: any;
constructor(private _http: Http) { }
getPosts() {
return this._http.get("/api/posts")
.map(result => this.result = result.json());
}
getPost(id) {
return this._http.get("/api/details" + id)
.map(result => this.result = result.json());
}
}
次は私のapi.jsファイルです。コンソールでさえ、投稿を記録しません。
router.get('/details/:id', function(req, res) {
console.log('Requesting post');
post.findById(req.params.id)
.exec(function(err, post) {
if (err) {
console.log('Error getting the post');
} else {
res.json(post);
console.log(post);
}
});
});
私はここで間違っています。私はどんな指導にも感謝します。
?クロムコンソールの – Aravind
しかし、私はすべての投稿を引っ張ってみると、そのエラーは表示されません。単一の投稿をリクエストしようとするときだけ – Nosail
JSONを返すと予想されるものは、実際にはHTMLを返すので、最初の文字として '<'が返されます。これはおそらく、4xxまたはおそらく5xxのいずれかの、APIをホストしているサーバーの標準エラーページです。したがって、サーバー上のコードは失敗する可能性が高く、間違ったルートになる可能性があります。あなたは、ブラウザのdevツールのネットワークタブをチェックすることで何が返ってくるかを見ることができます。または、 '.map()の前に' .do(response => console.log(response.text())) 'を追加してください。 –