2016-10-17 52 views
7

Webpack'e harici bağımlılık olarak açısal yönlendiriciyi yüklemeye çalışıyorum. Modül adı "açısal-ui-yönlendirici" dir. İşte bir örnek:Webpack externals Modül adı hyphen

module.exports = webpackMerge(commonConfig, { 
    ... 
    externals: { 
     'angular': true, 
     'angular-ui-router': true 
    }, 
    ... 
}); 

bu sorun WebPack aşağıdaki gibi olmasına benim app.bundle.js bir modül oluşturur olmasıdır:

/***/ }, 
/* 1 */ 
/***/ function(module, exports) { 

    module.exports = angular; 

/***/ }, 
/* 2 */ 
/***/ function(module, exports) { 

    module.exports = angular-ui-router; 

/***/ } 
/******/ ]); 

tarayıcı modülünü yüklemeye çalışır

, Ben bu soruna yönelik bulduk

Uncaught ReferenceError: ui is not defined

sadece düzeltme: aşağıdaki hatayı atarak bir ifadesi olarak module.exports = angular-ui-router değerlendirir : Bu, doğru sonucu verir. Bu, doğru sonucu verir.

Daha iyi bir yolu var mı?

+2

iyi bir yol vardır: Yani app.bundle kod şu şekilde görünecektir

require("angular-ui-router") would be used for requireJS and root.angularUIRouter = factory(root["angular-ui-router"]) would be used for global variable type. 

Paketi koduna sahip olacaktır. Basit externals boolean seçeneği için 'window'un ima edilmemesi can sıkıcı bir durumdur, ancak bu, tarayıcı betiklerinden başka şeyleri (örneğin,' window 'içermeyen web worker script'leri gibi) hedeflerken yararlı olur. – Jacob

cevap

-1

Dıştan adlandırılmış modül adı varsa, çıkış bölümünde libraryTarget öğesini umd olarak kullanın. Gerçekten,

"object" == typeof exports && "object" == typeof module ? 
module.exports = factory(require("angular-ui-router")) : "function" == 
typeof define && define.amd ? define(["angular-ui-router"], factory) : 
"object" == typeof exports ? exports.temp = factory(require("angular-ui- 
router")) : root.temp = factory(root["angular-ui-router"])