0

我试图解决的问题在下面显示的输出中表示:

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

我正在尝试测试MyObject. 它的依赖结构如下所示:

MyObject
    - MyObjectDependency
        - MyObjectDependency_Dependency
            - Dexie

换句话说,MyObject 依赖于 MyObjectDependency,MyObjectDependency 依赖于 MyObjectDependency_Dependency,而 MyObjectDependency_Dependency 最终依赖于 Dexie。

我正在用 TypeScript 编写一个 Aurelia 网络应用程序。我已经通过 jspm 包含了 Dexie 库(indexedDB 包装器)。为了让应用程序能够构建/运行,我必须使用脚本标签将 jspm_packages 文件夹中的 dexie.js 直接包含到 index.html 中。

我试图让 Dexie 使用 SystemJS 加载(就像它应该的那样),但是它失败了。

我尝试更新我的 karma 配置以显式包含 dexie.js,它没有解决上面输出中描述的错误。

我还尝试更新正在使用的各种组件的版本,这似乎也没有任何帮助。

以下是我正在使用的关键组件的版本:

节点:4.4.4

JSPM:0.16.15

系统JS :0.19.6

幻影JS:2.1.7

业力:0.13.22

德西:1.3.6

我已经走到了死胡同。我不知道还能去哪里看。

如果需要任何其他信息,请告诉我 - 我很乐意添加我可以添加的内容。

谢谢

4

2 回答 2

0

我试图让 Dexie 使用 SystemJS 加载(就像它应该的那样),但是它失败了。

如果没有更多信息,我最好的猜测是您没有正确包含它。

import 'dexie';

在这里查看答案以获取更多信息。

是否可以将 JQuery Bootstrap 框架与 Aurelia 一起使用?

于 2016-06-16T01:17:58.227 回答
0

在 Matthew James Davis 和 alexibs 的帮助下,我找到了解决方案。非常感谢你们!

Matthew 说我错误地导入了 dexie 是对的,我能够通过接受 alexibs 的建议并在 Chrome 而不是 PhantomJS 中进行测试来找到确切的位置。

似乎 Dexie 软件包附带的 *.d.ts 文件没有被 VS2015 识别——这是我目前正在解决的问题。我添加了自己的 *.d.ts 文件以custom_typings明确指定模块“dexie”。

我从 Dexie 复制了定义文件并将最后一行从

export default Dexie;

到:

declare module "dexie" {
    export default Dexie;
}

有了这个版本的 dexie.d.ts,VS2015 现在对 Dexie 文档支持的 import 语句感到满意:

import Dexie from 'dexie'.

在创建我的 Dexie 表类的过程中,按照 Dexie 文档的建议,我添加了以下几行:

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

因为我没有导入 dexie,所以我到处都有这个问题。

创建类型定义后,只需将导入添加import Dexie from 'dexie'到这些文件即可最终解决问题。

于 2016-06-16T13:06:41.017 回答