Ag-grid 不适用于 angular 和 webpack

Ag-grid not working with angular and webpack

我正在尝试让 ag-grid 与 webpack 一起工作。 我通过 npm 添加 ag-grid 并通过这样做添加了对 webpack.config 的引用来完成标准操作:

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

文件被解析并加载到索引文件中就好了。我为 angular.

完成了以下操作
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 的引用时,应用程序运行正常。

所以有人建议吗?

所以 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"]);

你知道它有用吗

如果你喜欢它,请给我一个赞!谢谢

以下是对我有用的方法,首先是解决方案:

npm install imports-loader --save-dev

然后在我的代码中,将其添加到 webpack-config.js

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

那么问题:

npm中npm中的ag-grid不是"npm ready",代码中也没有说明ag-grid需要("angular")。所以 webpack 可以自由地把它放在文件的任何地方,并随时加载它。在我的例子中,当 ag-grid 加载时,angular 和 window.angular 未定义,因此 ag-grid 在 angular 之前加载。 ag-grid 在创建模块之前检查 window.angular 是否已定义,因此永远不会创建模块。

上面的步骤添加了一个垫片,总是在 ag-grid 之前加载 angular。