2017-11-01 5 views
2

Ich bin brandneu zu EmberJS, und bin durch ein Tutorial. Ich bin bei dem Teil des Tutorials, der anfängt über das Erstellen von Diensten zu sprechen und sie in Ihre Controller zu injizieren (ich bin nicht 100% sicher, ob es ein Controller ist, aber ich komme aus AngularJS, und es scheint ziemlich ähnlich).Ember generiert Serviceerhöhung Fehler bei der Injektion

Im Terminal in meinem Ember-Projekt führe ich den Befehl ember g service authentication. Ich kann sehen, dass der Dienst im Diensteverzeichnis meiner App in der Datei authentication.js erstellt wurde. Wenn ich es in meinen Controller versuchen, die Injektion jedoch bekomme ich dieses Problem im Browser, wenn ich vor Ort die App dienen up,

Error: Assertion Failed: Attempting to inject an unknown injection: 'service:authentication 

Könnte das sein, weil ich eine Version von Ember bin mit, die als im Tutorial ist neue und es gibt eine andere Möglichkeit, Dienste jetzt zu injizieren? Ich frage das, weil das ist die Syntax des Dienstes im Tutorial

import ember from 'ember' 

export default Ember.Service.extend({ 
    records: [] 
}); 

und dies ist die Syntax von dem, was ich jetzt habe, automatisch erstellt, wenn das Projekt mit ember new

import Service from '@ember/service'; 

export default Service.extend({ 
    records: [] 
}); 

gebaut wurde org js "Wo Dienst injiziert wird"

import Route from '@ember/routing/route'; 

export default Route.extend({ 

    authentication: Ember.inject.service(), 

    setupController(controller) { 
    this._super(...arguments); 
    } 
}); 
+2

Der Code, den Sie in Ordnung geteilt tun musste neu gestartet ist, wird mit einer Sache, die Sie ändern könnte 'Import {inject} von "@ ember/service"; 'statt sich auf den globalen' Ember.inject.service' zu ​​verlassen. –

Antwort

2

In Ember Version 2.16 können Sie JavaScript-Modul api für den Import nutzen.
Refer this blog post
Refer this full list

wenn Ihre Ember Version unter 2,16 ist, dann

import ember from 'ember' 

export default Ember.Service.extend({ 
    records: [] 
}); 

wenn Ember Version> = 2.16 dann die unten ist der richtige Weg zu importieren,

import Service from '@ember/service'; 

export default Service.extend({ 
    records: [] 
}); 
2

Es sieht so aus, als ob Sie Ember 2.16 benutzen (wie andere schon geantwortet haben, verwendet es die Modularisierung der neuen Komponenten und das Tutorial, das Sie verfolgen, sieht wie 2.15 aus r vorher, wie Sie auch in Ihrem Beitrag erwähnt haben).

Es macht Sinn, dass Sie neue Module in der neuen Route verwenden sollte:

import Route from '@ember/routing/route'; 
import { inject as service } from "@ember/service"; 

export default Route.extend({ 
    authentication: service() 
}); 

One acclaration: der Code, den Sie zeigen eine route Klasse (es gibt controllers auf der Strecke Hierarchie, und auch dort sind components, die nicht Teil der Routenhierarchie sind). Sie werden in der Lage sein, Ihren brandneuen Service in jeder der genannten Ebenen zu injizieren.

2

Dank Ihnen allen für alle Informationen über EmberJS.However Es stellt sich heraus, alles, was ich war meinem lokalen Server -.-

+0

Ich bekam die gleiche Fehlermeldung und Neustart des Servers löste das Problem. Danke, dass du es hier niedergeschrieben hast. –

Verwandte Themen