2015-07-20 53 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() 
    ] 
};