【问题标题】:webpack + angular 1.X doesn't workwebpack + angular 1.X 不起作用
【发布时间】:2017-06-03 10:08:31
【问题描述】:

我正在尝试在我现有的 angularjs [1.4.7] 应用程序中使用 webpack。我有一个自定义模块,它使用 webpack 作为捆绑包生成。我稍后将该自定义模块添加为其他模块中的依赖项。生成捆绑包时没有任何错误。但是当我将此模块用作依赖项时,它会抛出错误。我已经尝试了所有可能的方法,但无法理解这里出了什么问题。

错误 由于以下原因未能实例化模块 Module2: 错误:[$injector:modulerr]....... 当模块由于某些异常而无法加载时会发生此错误。上面的错误消息应该提供额外的上下文。

模块加载失败的一个常见原因是您忘记将文件包含在定义的模块中,或者文件无法加载。

代码片段 webpack.config.js

module.exports = {
    entry: {
        app: [  './src/main/resources/js/app/app.module.js' ]
    },
    output: {
        filename: './src/main/resources/js/app/bundle.js'
    },
    node: {
        module: "empty",
        net:"empty",
        fs: "empty"
    },
    watch: false
};

app.module.js

'使用严格';

var angular = require('angular');
module.exports = angular.module('module1', [
    require('./components/services').name,
    require('./components/controllers').name,
    require('./components/directives').name

]);

组件/服务/index.js

   'use strict';
    var angular = require('angular');    
    module.exports = angular.module('services',[])
        .factory('Service1', require('./Service1'))
        .factory( 'Service2' , require('.Service2'))

组件/服务/service1.js

 module.exports = function Service1( $q) 
{
  var service1 =  {};
  // service implementation
 return service1;
};

组件/控制器/index.js

'use strict';
var angular = require('angular');
module.exports = angular.module('controllers',[])
    .controller('controller1' , require('./controller1'))
    .controller('controller2' , require('./controller2'));

组件/指令/index.js

'use strict';
var angular = require('angular');
module.exports = angular.module('directives',['services'])
    .directive('directive1', require('./directive1'))
    .directive('directive2' , require('./directive2'))

index.html

<script src="bundle.js"  type="text/javascript"></script>

另一个 app.js

var app2 = angular.module('Module2',['ui.router','ui.bootstrap','module1']);

【问题讨论】:

    标签: angularjs webpack


    【解决方案1】:

    尝试在条目中添加您的第二个模块:

    entry: {
        app: [  
           './src/main/resources/js/app/app.module.js',
           './src/main/resources/js/app/app.js'
        ]
    },
    

    这将有助于首先定义您的模块。我也没有在您的代码中看到任何对 module2 的引用。

    【讨论】:

    • 第二个模块是一个单独的项目[Intellij 中的模块],因此您在这里看不到任何参考。该项目作为 maven 依赖项添加到另一个定义了第二个模块的项目中。
    • 在这种情况下,它可能是执行顺序,你必须确保你的模块2在你的依赖图中的模块1之前加载
    • 你看到这里有什么问题吗?节点:{模块:“空”,网络:“空”,fs:“空”},
    • 没明白,如果你用你的 Maven 配置更新你的问题,或者至少是它们如何链接的更高级别的视图,会更有用
    • 我说的是 webpack.config.js 中的代码 sn-p。我还将在几分钟内添加更高级别的配置。
    猜你喜欢
    • 1970-01-01
    • 2017-06-30
    • 2017-12-13
    • 2016-02-01
    • 2017-01-12
    • 2019-03-10
    • 2016-08-23
    • 1970-01-01
    • 2018-01-30
    相关资源
    最近更新 更多