2015-07-20 52 views
4

我正在使用webpack构建我的angular.js应用程序。 给出一个简单的例子:Webpack正在加载模块两次

app.js

var angular = require('exports?window.angular!angular'), 
    angularMoment = require('angular-moment'); 

angular.module('myApp', [angularMoment]); 

角moment.js

define(['angular', 'moment'], function(angular, moment) { 
    // some library code 
}); 

这里的角进口的两种方式,以装载机,只是按名称。它会导致该角度将被注入到页面两次,我看到下面的控制台的警告:

WARNING: Tried to load angular more than once. 

有没有一种方法,使的WebPack考虑的角度既进口为同一模块?

webpack.conf.js

module.exports = { 
    entry: { 
    'app': './src/app/app.js' 
    }, 
    plugins: [ 
    new webpack.ResolverPlugin(
     new webpack.ResolverPlugin.DirectoryDescriptionFilePlugin("bower.json", ["main"]) 
    ), 
    new AngularPlugin() 
    ] 
}; 
+0

你想包括角的内部捆绑你的应用程序吗?我发现首先加载一个离散文件比较容易,因为这些类型的库与webpack不兼容。 –

+0

这似乎是合理的解决方案。试图做到这一点,它的工作原理。你想把解决方案扩展到awnswer还是我可以自己做? –

回答

2

一种选择是有角是一个独立的脚本,并已将其配置为外部依赖性:

module.exports = { 
    external: { 
     'angular' : 'angular' 
    }, 
    entry: { 
    'app': './src/app/app.js' 
    }, 
    plugins: [ 
    new webpack.ResolverPlugin(
     new webpack.ResolverPlugin.DirectoryDescriptionFilePlugin("bower.json", ["main"]) 
    ), 
    new AngularPlugin() 
    ] 
};