2

ag-grid を webpack で動作させようとしています。npm を介して ag-grid を追加することで標準的なことを行い、次のようにして webpack.config への参照を追加しました。

resolve: {
    alias: {"ag-grid" : path.resolve(__dirname, "./node_modules/ag-grid/dist/ag-grid.js")
}

ファイルは解決され、インデックス ファイルに読み込まれます。そして、角度に対して次のことを行いました。

angular.module("cs-app", [require("ag-grid").name]);

Webpack もこのファイルを解決し、含まれて読み込まれますが、アプリを実行すると次のエラーが発生します。

[$injector:modulerr] Failed to instantiate module angularGridGlobalFunction due to:
[$injector:nomod] Module 'angularGridGlobalFunction' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.

ag-grid.js で angularGridGlobalFunction という名前が見つかりませんが、ag-grid への参照をコメント アウトすると、アプリは問題なく動作します。

それで、誰か提案はありますか?

4

2 に答える 2

1

そのため、ag-grid は webpack.config.js でエイリアスを設定する必要がないため、それを削除して node_modules フォルダーにエイリアスを設定しました。

resolve     : {
    alias         : {
        // bind version of jquery-ui
        "jquery-ui" : "jquery-ui/jquery-ui.js",      
        // bind to modules;
        modules     : path.join(__dirname, "node_modules"),
        components  : path.join(__dirname, "components"),
        libs        : path.join(__dirname, "bower_components"),
    }
},

モジュールファイルの先頭に追加します

require("ag-grid");
require("modules/ag-grid/dist/ag-grid.css");
require("modules/ag-grid/dist/theme-fresh.css");

angularモジュールの参照を変更しました

angular.module("cs-app", ["agGrid"]);

そして、あなたはそれがうまくいったことを知っています

気に入ったら、賛成票を投じてください!ありがとう

于 2015-10-30T02:49:09.577 に答える
0

これが私にとってうまくいったことです。最初の解決策は次のとおりです。

npm install imports-loader --save-dev

次に、私のコードで、これを webpack-config.js のローダー配列に追加します

{ test: require.resolve("ag-grid"), loader: "imports?importedAngular=angular" },

次に問題:

npm の npm の ag-grid は「npm 対応」ではありません。コードには ag-grid が必要とする (「angular」) という指示はありません。したがって、webpack はファイルのどこにでも自由に配置でき、いつでもロードできます。私の場合、ag-grid がロードされたとき、angular と window.angular は未定義だったので、ag-grid は angular の前にロードされました。ag-grid は、モジュールを作成する前に window.angular が定義されていることを確認するため、モジュールは作成されません。

上記の手順では、シムを追加して、常に ag-grid の前に angular をロードします。

于 2016-01-11T17:45:36.477 に答える