1

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 が認識しないため、コンパイル エラーが発生します。

4

1 に答える 1