2016-02-27 3 views
2

Я пытаюсь использовать Injectable в своем коде в приложении Ionic 2, и я получаю эту ошибку.Ionic 2 - Неожиданная ошибка в сервисе

Модуль сборки не удалось: SyntaxError: /home.js: Неожиданный токен (10:25)

export class HomePage { 
constructor(myservice: WpService) { 
        ^
     this.service = myservice; 
     this.data = null; 
    } 

Это мой код: (home.js файл).

import {Page} from 'ionic-framework/ionic'; 
import {WpService} from './wpservice'; 

@Page({ 
    templateUrl: 'build/pages/home/home.html', 
    providers: [WpService] 
}) 
export class HomePage { 
    constructor(myservice: WpService) { 
     this.service = myservice; 
     this.data = null; 
    } 

    retrieve() { 
     this.service.loadData(); 
     setTimeout(() => { 
      this.data = this.service.getData(); 
      console.log(this.data); 
     }, 5000); 
    } 
} 

и это файл wpservice:

import {Injectable} from 'angular2/core'; 
import {Http} from 'angular2/http'; 
import 'rxjs/Rx' 

@Injectable 
export class WpService { 
    constructor(http: Http) { 
     this.http = http; 
     this.data = null; 
    } 

    loadData() { 
     this.http.get('<some rest api>').subscribe(data => { 
      this.data = data.json() 
     }); 
     } 

    getData() { 
     return this.data; 
    } 
    } 

Как ни странно эта ошибка возникает только с февраля 26 вечера. До этого он работал нормально.

+0

Я не могу точно сказать, что вызывает ошибку. Но я заметил некоторые проблемы: 1 у вас есть дополнительный '{' в конце файла wpservice. 2- ваш @Injectable >> должен быть @Injectable(). 3- Ваш код - это машинопись, но ваши файлы .js – Abdulrahman

+0

@Abdulrahman: Большое вам спасибо; } была ошибкой при копировании/вставке моего кода из моего редактора, а Ionic 2 использует файлы js с ES6 (так же, как и машинопись), поэтому я не думаю, что это может быть проблемой здесь. –

ответ

3

Спасибо, ребят, я решил Эта проблема. Я опубликую, как я сделал это ниже, чтобы кто-то другой столкнулся с тем же успехом.

Я написал метод get parameters(), как показано ниже. (После просмотра приложения для ионной конференц-связи от drifty co team на github).

import {Page} from 'ionic-framework/ionic'; 
import {Inject} from 'angular2/core; 
import {WpService} from './wpservice'; 

@Page({ 
    templateUrl: 'build/pages/home/home.html', 
    providers: [WpService] 
}) 
export class HomePage { 
    static get parameters(){ 
     return [WpService]; 
     } 
    constructor(wpservice) { 
     this.service = wpservice; 
     this.data = null; 
    } 

    retrieve() { 
     this.service.loadData(); 
     setTimeout(() => { 
      this.data = this.service.getData(); 
      console.log(this.data); 
     }, 5000); 
    } 
} 

И я изменил файл службы, как показано ниже:

import {Injectable, Inject} from 'angular2/core'; 
import {Http} from 'angular2/http'; 
import 'rxjs/Rx' 

@Injectable() 
export class WpService { 
    static get parameters(){ 
     return [Http]; 
     } 
    constructor(http) { 
     this.http = http; 
     this.data = null; 
    } 

    loadData() { 
     this.http.get('<some rest api>').subscribe(data => { 
      this.data = data.json() 
     }); 
     } 

    getData() { 
     return this.data; 
    } 
    } 

Incase вы решили внедрить более одного сервиса, то вы должны дать оператор возврата в методе параметры приобретают, как показано ниже:

return [[service1],[service2]]; 

Надеюсь, что это поможет кому-то другому, столкнувшись с той же проблемой. Благодарю.

+1

Спасибо. Это отличается от любых документированных примеров. Наверное, это то, что вы можете использовать для бета-версий. Приветствия. – markau

+0

Похоже, все, что вы сделали, - это удалить машинопись. Это «исправляет» ошибку, но тогда у вас нет машинописного текста ... Я только что получил эту ошибку после обновления до узла 6 и возврата на 5 и переустановки. Я все еще пытаюсь выяснить, как исправить это с помощью машинописных файлов – webdevinci

+0

На самом деле, я никогда не использовал машинописный текст. Это код ES6. Машинопись - это просто популярная версия супермножества ES6. Btw., Какую бета-версию Ionic 2 вы используете ..? –

0

Я столкнулся с аналогичной проблемой, похоже, его вопрос с Ionic Version: 2.0.0-beta.1, по-видимому, его созданием машинописи файлов с расширением .js

читать больше об этой проблеме here

Смежные вопросы