2016-06-15 11 views
0

Die Frage, die ich zu lösen versuchen, wird in der Ausgabe angezeigt unten dargestellt:Unit Testing PhantomJS Fehler: nicht variabel finden: Dexie

15 06 2016 11:11:16.532:INFO [karma]: Karma v0.13.22 server started at http://localhost:9876/ 
15 06 2016 11:11:16.532:INFO [launcher]: Starting browser PhantomJS 
15 06 2016 11:11:18.004:INFO [PhantomJS 2.1.1 (Windows 8 0.0.0)]: Connected on socket /#3nWVSRqI9N9XmHSCAAAA with id 41039744 
PhantomJS 2.1.1 (Windows 8 0.0.0) ERROR 
    Error: Can't find variable: Dexie 
    Error loading C:/My/My.App/src/My.App.Web/test/case/MyObjectTest.js 
[11:11:18] Finished 'test' after 2.8 s 

ich MyObject zu testen bin versucht. Es ist Abhängigkeitsstruktur sieht wie folgt aus:

MyObject 
    - MyObjectDependency 
     - MyObjectDependency_Dependency 
      - Dexie 

Mit anderen Worten hängt MyObject auf MyObjectDependency, die auf MyObjectDependency_Dependency abhängt, die schließlich auf Dexie abhängt.

Ich schreibe eine Aurelia Web App in TypeScript. Ich habe die Dexie-Bibliothek (indexedDB-Wrapper) über jspm eingefügt. Damit die App erstellt/ausgeführt werden kann, musste ich explizit dexie.js aus dem Ordner jspm_packages direkt in index.html mithilfe von Skript-Tags einfügen.

Ich habe versucht, Dexie zu laden mit SystemJS (wie es sollte), aber es schlägt fehl.

Ich habe versucht, meine Karma-Konfiguration zu aktualisieren, um explizit dexie.js einzuschließen, die den in der obigen Ausgabe beschriebenen Fehler nicht behoben hat.

Ich versuchte auch, Versionen der verschiedenen verwendeten Komponenten zu aktualisieren, die auch nicht zu helfen schienen.

Hier sind die Versionen der wichtigsten Komponenten Ich verwende:

Knoten: 4.4.4

JSPM: 0.16.15

SystemJS: 0.19.6

PhantomJS: 2.1.7

Karma: 0.13.22

Dexie: 1.3.6

ich eine Sackgasse erreicht haben. Ich bin mir nicht sicher wo ich sonst hinschauen soll.

Bitte lassen Sie mich wissen, wenn zusätzliche Informationen benötigt werden - ich werde gerne hinzufügen, was ich kann.

Danke

+0

Haben Sie versucht, http: // localhost: 9876/debug.html in Chrome zu öffnen und zu debuggen? – alexeibs

Antwort

0

Ich habe eine Lösung mit Hilfe von Matthew James Davis und alexeibs gefunden. Danke euch beiden sehr!

Matthew hatte Recht, dass ich Dexie falsch importierte, und ich war in der Lage, genau zu finden, wo Alexeibs Vorschlag und das Testen in Chrome statt PhantomJS genommen wurde.

Es scheint, dass die mit dem Dexie-Paket gelieferte * .d.ts-Datei von VS2015 nicht erkannt wird - ein Problem, mit dem ich mich gerade beschäftige. Ich habe meine eigene * .d.ts-Datei zu custom_typings hinzugefügt, die explizit das Modul 'Dexie' spezifiziert.

ich die Definitionsdatei von Dexie kopiert und verändert die letzte Zeile von

export default Dexie; 

zu:

declare module "dexie" { 
    export default Dexie; 
} 

Mit dieser Version von dexie.d.ts ist VS2015 jetzt mit dem Import glücklich Anweisung unterstützt von Dexie Dokumentation:

import Dexie from 'dexie'.

Während der Erstellung meiner Dexie Tabellenklassen, fügte ich hinzu, wie Dexie Dokumentation vorgeschlagen, die Linien:

const Promise = Dexie.Promise; // KEEP! (or loose transaction safety in await calls!) 
const all = Promise.all; 

Überall hatte ich diese zu brechen, weil ich nicht Dexie importiert wurden.

Mit der Typdefinition, die erstellt wurde, wurde das Problem durch einfaches Hinzufügen des Imports import Dexie from 'dexie' zu diesen Dateien gelöst.

0

I tried to get Dexie to be loading using SystemJS (like it should) but, it fails.

Ohne weitere Informationen, meine beste Vermutung ist, dass Sie richtig sind, einschließlich nicht.

import 'dexie'; 

Werfen Sie einen Blick auf die Antwort hier für weitere Informationen.

Would it be possible to use JQuery Bootstrap framework along with Aurelia?

+0

Danke @Matthew. Auf diese Weise funktioniert es für den Build/Run der Web-App. Das Problem ist, wenn ich versuche zu testen, bekomme ich immer noch den Fehler in der ursprünglichen Frage beschrieben. Ich kann die Frage aktualisieren, um meine Konfigurationen einzuschließen, wenn das helfen würde. – metaomniliquant