Unit Testing PhantomJS Error: Can't find variable: Dexie
Unit Testing PhantomJS Error: Can't find variable: 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
我正在尝试测试 MyObject
。它的依赖结构如下所示:
MyObject
- MyObjectDependency
- MyObjectDependency_Dependency
- Dexie
换句话说,MyObject 依赖于 MyObjectDependency,MyObjectDependency 依赖于 MyObjectDependency_Dependency,最终依赖于 Dexie。
我正在用 TypeScript 编写一个 Aurelia 网络应用程序。我通过 jspm 包含了 Dexie 库(indexedDB 包装器)。要将应用程序安装到 build/run,我必须使用脚本标记将 jspm_packages 文件夹中的 dexie.js 直接包含到 index.html。
我试图让 Dexie 使用 SystemJS 加载(就像它应该的那样)但是,它失败了。
我尝试更新我的 karma 配置以明确包含 dexie.js,但这并没有解决上面输出中描述的错误。
我还尝试更新正在使用的各种组件的版本,但似乎也没有任何帮助。
以下是我使用的关键组件的版本:
节点:4.4.4
JSPM: 0.16.15
SystemJS: 0.19.6
PhantomJS: 2.1.7
业力:0.13.22
Dexie: 1.3.6
我走到了死胡同。我不确定还有什么地方可以看。
如果需要任何其他信息,请告诉我 - 我很乐意尽我所能。
谢谢
I tried to get Dexie to be loading using SystemJS (like it should) but, it fails.
在没有更多信息的情况下,我的最佳猜测是您没有正确包含它。
import 'dexie';
查看此处的答案了解更多信息。
在 Matthew James Davis 和 alexeibs 的帮助下,我找到了解决方案。非常感谢你们!
Matthew 是对的,我错误地导入了 dexie,我能够通过在 Chrome 而不是 PhantomJS 中采纳 alexeibs 建议和测试来准确找到位置。
似乎 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 Dexie from 'dexie'
.
在创建我的 Dexie table 类 期间,我按照 Dexie 文档的建议添加了以下行:
const Promise = Dexie.Promise; // KEEP! (or loose transaction safety in await calls!)
const all = Promise.all;
因为我没有导入 dexie,所以我遇到的每个地方都坏了。
创建类型定义后,只需将导入 import Dexie from '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
我正在尝试测试 MyObject
。它的依赖结构如下所示:
MyObject
- MyObjectDependency
- MyObjectDependency_Dependency
- Dexie
换句话说,MyObject 依赖于 MyObjectDependency,MyObjectDependency 依赖于 MyObjectDependency_Dependency,最终依赖于 Dexie。
我正在用 TypeScript 编写一个 Aurelia 网络应用程序。我通过 jspm 包含了 Dexie 库(indexedDB 包装器)。要将应用程序安装到 build/run,我必须使用脚本标记将 jspm_packages 文件夹中的 dexie.js 直接包含到 index.html。
我试图让 Dexie 使用 SystemJS 加载(就像它应该的那样)但是,它失败了。
我尝试更新我的 karma 配置以明确包含 dexie.js,但这并没有解决上面输出中描述的错误。
我还尝试更新正在使用的各种组件的版本,但似乎也没有任何帮助。
以下是我使用的关键组件的版本:
节点:4.4.4
JSPM: 0.16.15
SystemJS: 0.19.6
PhantomJS: 2.1.7
业力:0.13.22
Dexie: 1.3.6
我走到了死胡同。我不确定还有什么地方可以看。
如果需要任何其他信息,请告诉我 - 我很乐意尽我所能。
谢谢
I tried to get Dexie to be loading using SystemJS (like it should) but, it fails.
在没有更多信息的情况下,我的最佳猜测是您没有正确包含它。
import 'dexie';
查看此处的答案了解更多信息。
在 Matthew James Davis 和 alexeibs 的帮助下,我找到了解决方案。非常感谢你们!
Matthew 是对的,我错误地导入了 dexie,我能够通过在 Chrome 而不是 PhantomJS 中采纳 alexeibs 建议和测试来准确找到位置。
似乎 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 Dexie from 'dexie'
.
在创建我的 Dexie table 类 期间,我按照 Dexie 文档的建议添加了以下行:
const Promise = Dexie.Promise; // KEEP! (or loose transaction safety in await calls!)
const all = Promise.all;
因为我没有导入 dexie,所以我遇到的每个地方都坏了。
创建类型定义后,只需将导入 import Dexie from 'dexie'
添加到这些文件即可最终解决问题。