2017-02-05 17 views
1

У меня есть приложение с угловыми углами, и я тоже использую JSONP.Uncaught ReferenceError: __ng_jsonp____req0_finished не определен на

Это моя служба:

import { Injectable } from '@angular/core'; 
import { Http, Response, Headers, RequestOptions } from '@angular/http'; 
import { Observable } from 'rxjs/Observable'; 
import { Page } from './page'; 
import 'rxjs/add/operator/map'; 
import 'rxjs/add/operator/catch'; 
import { Jsonp } from '@angular/http'; 

@Injectable() 
export class ProductService { 

    private urlPage = 'http://api.zanox.com/json/2011-03-01/products?q=iphone&connectid=XXXXXXXXXXXX&programs=12011&callback=JSONP_CALLBACK'; 

    constructor(private _jsonp: Jsonp) { } 

    getPage(): Observable<Page> { 
     return this._jsonp.get(this.urlPage).map(this.extractData).catch(this.handleError); 
    } 

    private extractData(res: Response) { 
     let body = res.json(); 
     return body || {}; 
    } 

    private handleError(error: any) { 
     let errMsg = (error.message) ? error.message : 
      error.status ? `${error.status} - ${error.statusText}` : 'Server error'; 
     console.error(errMsg); 
     return Observable.throw(errMsg); 
    } 

} 

И я получаю эту ошибку:

Uncaught ReferenceError: __ng_jsonp____req0_finished is not defined at products?q=iphone&connectid=XXXXXXXXXX&programs=12011&callback=__ng_jsonp____req0_finished:1

(anonymous) @ products?q=iphone&connectid=XXXXXXXXXXXX&programs=12011&callback=__ng_jsonp____req0_finished:1 common.js:143

Uncaught TypeError: Cannot read property 'apply' of null at globalOnerror (common.js:143)

globalOnerror @ common.js:143

productService.ts:29 200 - Ok

Как решить это?

+0

Издание можно проследить здесь: https://github.com/angular/angular/issues/14223 –

ответ

0

Я решил эту ошибку вернуться к версии 2.3.1 Углового. Ошибка происходит в версии 2.4.X.

"@angular/common": "~2.3.1", 
"@angular/compiler": "~2.3.1", 
"@angular/core": "~2.3.1", 
"@angular/forms": "~2.3.1", 
"@angular/http": "~2.3.1", 
"@angular/platform-browser": "~2.3.1", 
"@angular/platform-browser-dynamic": "~2.3.1", 
"@angular/router": "~3.3.1", 
+1

Конкретно ошибка есть в @ Угловое/http "2.4.7". –

0

Вот мое решение:

set a variable:times 
export class WikipediaService { 
    constructor(private jsonp: Jsonp) { 
    this.times=0;} 
    search (term: string) { 
    let wikiUrl = 'http://en.wikipedia.org/w/api.php'; 
    let params = new URLSearchParams(); 
    params.set('search', term); // the user's search value 
    params.set('action', 'opensearch'); 
    params.set('format', 'json'); 
    params.set('callback', `__ng_jsonp__.__req${this.times}.finished`); 
    this.times=this.times+1; 
    // TODO: Add error handling 
    return this.jsonp 
      .get(wikiUrl, { search: params }) 
      .map(response => <string[]> response.json()[1]); 
    } 
} 
+1

лучшим решением является обратное @ угловое/http до версии 2.4.5, тогда у вас нет обходного пути в вашем коде. и когда ошибка исправлена, вы можете вернуться к последней версии. –