0

The issue I am trying to resolve is represented in the output displayed below:

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

I am attempting to test MyObject. It's dependency structure looks like this:

MyObject
    - MyObjectDependency
        - MyObjectDependency_Dependency
            - Dexie

In other words, MyObject depends on MyObjectDependency which depends on MyObjectDependency_Dependency which finally depends on Dexie.

I am writing an Aurelia web app in TypeScript. I have included the Dexie library (indexedDB wrapper) through jspm. To get the app to build/run I had to explicitly include dexie.js from the jspm_packages folder directly to index.html using script tags.

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

I tried updating my karma config to explicitly include dexie.js which didn't resolve the error described in the output above.

I also tried updating versions of the various components being used which also didn't seem to help any.

Here are the versions of the key components I am using:

Node: 4.4.4

JSPM: 0.16.15

SystemJS: 0.19.6

PhantomJS: 2.1.7

Karma: 0.13.22

Dexie: 1.3.6

I have reached a dead end. I am not sure where else to look.

Please let me know if any additional information is needed - I'll gladly add what I can.

Thank you

2 Answers2

0

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

Without more information, my best guess is that you're not including it properly.

import 'dexie';

Take a look at the answer here for some more info.

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

Community
  • 1
  • 1
Matthew James Davis
  • 12,134
  • 7
  • 61
  • 90
  • Thank you @Matthew. Doing it this way does work out for the web app's build/run. The issue is when I try to test I still get the error described in the original question. I can update the question to include my configurations if that would help. – metaomniliquant Jun 16 '16 at 11:40
0

I have found a solution with the help of Matthew James Davis and alexeibs. Thank you both very much!

Matthew was right that I was incorrectly importing dexie, and I was able to find exactly where by taking alexeibs suggestion and testing in Chrome rather than PhantomJS.

It seems the *.d.ts file that comes with the Dexie package is not getting recognized by VS2015 - an issue I am working around for the moment. I added my own *.d.ts file to custom_typings explicitly specifying module 'dexie'.

I copied the definition file from Dexie and changed the last line from

export default Dexie;

to:

declare module "dexie" {
    export default Dexie;
}

With this version of dexie.d.ts, VS2015 is now happy with the import statement supported by Dexie documentation:

import Dexie from 'dexie'.

During the creation of my Dexie table classes, I added, as suggested by Dexie documentation, the lines:

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

Everywhere I had this was breaking because I did not import dexie.

With the type definition created, simply adding the import import Dexie from 'dexie' to these files is what finally resolved the problem.