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コードはここにあります
編集済み
ただ明確にします。dexie のライブラリの問題だと言っているのではありません。正しい方法で実装していない可能性があります。したがって、Angular2 で dexie を正しく実装するためのガイドを探しています。
編集済み
このリンクを見つけましたが、以下のコードを追加する解決策がうまくいきません
System.register("dexie", [], true, function(require, exports, module) {
var global = System.global,
__define = global.define;
global.define = undefined;
(function (global, factory) {
....
(回避策)
そうではなく、スクリプトタグを介してdexieを追加することで、ほとんど動作させることができず、すぐにdexieを
<script src="vendor/dexie/dist/dexie.min.js"></script>
操作できます。
しかし、これの問題は、dexie をインポートできず、dexie のすべてのタイピングが欠落していることです。
dexie.d.ts を手動でコピーして参照しようとしましたが、typescript が認識しないため、コンパイル エラーが発生します。