2017-01-18 69 views
1

我想在我现有的angularjs [1.4.7]应用程序中使用webpack。我有一个自定义模块,它使用webpack作为一个包生成。我稍后将该自定义模块添加为其他模块中的依赖项。生成包时我没有收到任何错误。但是当我使用这个模块作为依赖时,它会抛出错误。我尝试了一切可能,并且无法理解这里出现了什么问题。webpack + angular 1.X不起作用

错误 未能实例模块单词数由于: 错误:[$注射器: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']); 

回答

0

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

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

它将帮助您首先定义您的模块。此外,我没有看到您的代码中对module2的任何引用。

+0

第二个模块是一个单独的项目[Intellij中的模块],因此您在这里看不到任何参考。该项目作为Maven依赖关系添加到定义第二个模块的另一个项目中。 – user911

+0

在这种情况下,它可能是执行的顺序,你必须确保你的模块2在你的依赖图 – Yaser

+0

中的模块1之前加载了吗?节点:{ 模块:“空”, 净:“空”, fs:“空” }, – user911