如何在 Angular2 中集成 DexieJs
How to integrate DexieJs in Angular2
当我尝试 运行 和与 Dexie 相关的代码时出现此错误。
Unhandled Promise rejection: ReferenceError: require is not defined
at eval (http://localhost:3001/vendor/traceur/dist/commonjs/traceur.js:5:92)
Evaluating http://localhost:3001/vendor/traceur/dist/commonjs/traceur.js
Error loading http://localhost:3001/vendor/traceur/dist/commonjs/traceur.js
Error loading http://localhost:3001/vendor/dexie/dist/dexie.js as "dexie" from http://localhost:3001/app/pages/portal/portal.js ; Zone: <root> ; Task: Promise.then ; Value: Error: ReferenceError: require is not defined(…)
只要声明一个数据库,我就已经出现了上述错误。
// Declare Database
class FriendDatabase extends Dexie {
friends: Dexie.Table<IFriend,number>;
constructor() {
super("FriendDatabase");
this.version(1).stores({
friends: "++id,name,age"
});
}
}
我添加 Dexie 的约定方式是 systemjs.config.js(在我的例子中,我使用了 Typescipt)
/** Map relative paths to URLs. */
const map: any = {
'dexie': 'vendor/dexie/dist',
'traceur': 'vendor/traceur/dist/commonjs'
};
/** User packages configuration. */
const packages: any = {
'dexie': { main: 'dexie.js', defaultExtension: 'js'},
'traceur': { main: 'traceur.js', defaultExtension: 'js'}
};
已编辑
我的src代码可以找到here
已编辑
澄清一下。我并不是说这是 dexie 的图书馆问题。可能是我没有以正确的方式实施。因此,正在寻找在 angular2 中正确实施 dexie 的指南。
已编辑
我找到了这个link,但是添加以下代码的解决方案对我不起作用
System.register("dexie", [], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
(function (global, factory) {
....
(变通)
不是什么,我几乎无法让它工作是通过脚本标签添加 dexie
<script src="vendor/dexie/dist/dexie.min.js"></script>
然后我就可以直接和 dexie 一起工作了。
但问题是我无法导入 dexie 并且 dexie 的所有类型都丢失了。
我尝试手动复制dexie.d.ts并引用它,但是打字稿不承认,所以我会出现编译错误。
谷歌搜索后终于找到了。
为了使用 SystemJS 配置 Dexie,可以在 github link.
在此处复制摘要
通过 npm 安装 dexie
npm install dexie --save
更新systemjs.config.js如下:
Add 'dexie': 'node_modules/dexie/dist/dexie.js' to map.
Add 'dexie': { format: 'amd' } to packages.
另外:确保你的 tsconfig 文件有 "moduleResolution": "node".
当我尝试 运行 和与 Dexie 相关的代码时出现此错误。
Unhandled Promise rejection: ReferenceError: require is not defined
at eval (http://localhost:3001/vendor/traceur/dist/commonjs/traceur.js:5:92)
Evaluating http://localhost:3001/vendor/traceur/dist/commonjs/traceur.js
Error loading http://localhost:3001/vendor/traceur/dist/commonjs/traceur.js
Error loading http://localhost:3001/vendor/dexie/dist/dexie.js as "dexie" from http://localhost:3001/app/pages/portal/portal.js ; Zone: <root> ; Task: Promise.then ; Value: Error: ReferenceError: require is not defined(…)
只要声明一个数据库,我就已经出现了上述错误。
// Declare Database
class FriendDatabase extends Dexie {
friends: Dexie.Table<IFriend,number>;
constructor() {
super("FriendDatabase");
this.version(1).stores({
friends: "++id,name,age"
});
}
}
我添加 Dexie 的约定方式是 systemjs.config.js(在我的例子中,我使用了 Typescipt)
/** Map relative paths to URLs. */
const map: any = {
'dexie': 'vendor/dexie/dist',
'traceur': 'vendor/traceur/dist/commonjs'
};
/** User packages configuration. */
const packages: any = {
'dexie': { main: 'dexie.js', defaultExtension: 'js'},
'traceur': { main: 'traceur.js', defaultExtension: 'js'}
};
已编辑 我的src代码可以找到here
已编辑
澄清一下。我并不是说这是 dexie 的图书馆问题。可能是我没有以正确的方式实施。因此,正在寻找在 angular2 中正确实施 dexie 的指南。
已编辑
我找到了这个link,但是添加以下代码的解决方案对我不起作用
System.register("dexie", [], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
(function (global, factory) {
....
(变通)
不是什么,我几乎无法让它工作是通过脚本标签添加 dexie
<script src="vendor/dexie/dist/dexie.min.js"></script>
然后我就可以直接和 dexie 一起工作了。
但问题是我无法导入 dexie 并且 dexie 的所有类型都丢失了。
我尝试手动复制dexie.d.ts并引用它,但是打字稿不承认,所以我会出现编译错误。
谷歌搜索后终于找到了。
为了使用 SystemJS 配置 Dexie,可以在 github link.
在此处复制摘要
通过 npm 安装 dexie
npm install dexie --save
更新systemjs.config.js如下:
Add 'dexie': 'node_modules/dexie/dist/dexie.js' to map.
Add 'dexie': { format: 'amd' } to packages.
另外:确保你的 tsconfig 文件有 "moduleResolution": "node".