Webpack外部模块名称带连字符
Webpack externals module name with hyphen
我试图在Webpack中加载angular-ui-router作为外部依赖项。模块名是"angular-ui-router"。下面是一个例子:
module.exports = webpackMerge(commonConfig, {
...
externals: {
'angular': true,
'angular-ui-router': true
},
...
});
这样做的问题是Webpack在我的app.bundle.js中创建了一个模块,看起来像这样:
/***/ },
/* 1 */
/***/ function(module, exports) {
module.exports = angular;
/***/ },
/* 2 */
/***/ function(module, exports) {
module.exports = angular-ui-router;
/***/ }
/******/ ]);
当浏览器试图加载模块时,它将module.exports = angular-ui-router
作为表达式计算,并抛出以下错误:
Uncaught ReferenceError: ui is not defined
我找到的唯一解决这个问题的方法是:
module.exports = webpackMerge(commonConfig, {
...
externals: {
'angular': true,
'angular-ui-router': 'window["angular-ui-router"]'
},
...
});
这将产生正确的结果。
有更好的方法吗?
我也有同样的问题,所以我用这样的东西来解决它
module.exports = webpackMerge(commonConfig, {
...
externals: [
....
'angular-ui-router': {
commonjs: 'angular-ui-router'
}
}
],
...
});
当您有带有连字符的外部模块名时,在输出部分使用libraryTarget作为umd。app。bundle代码中有
require("angular-ui-router") would be used for requireJS and
root.angularUIRouter = factory(root["angular-ui-router"]) would be used for global variable type.
Bundle代码应该是这样的:
"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"])
相关文章:
- 如何将单词(包括单词)与连字符匹配
- 删除图形和数字之间的连字符(-)符号
- JQuery根据连字符前的首字母对列表进行排序
- 如何替换javascript字符串中的前三个连字符
- 带有连字符的 Jquery 表排序器编号
- Javascript将所有文本框值更改为连字符
- regex中连字符的这种用法有效吗
- 使用连字符引用对象的属性名称
- 用连字符分隔匹配值
- 跳过用户输入的文本字符串中的特殊字符,并在 Javascript 中的每个单词后添加连字符
- 为什么不'我的javascript函数允许点,但允许连字符
- 如何防止电子邮件地址的css自动连字符
- 在数组中的偶数之间插入连字符
- JS Regex只允许数字、分号和连字符
- Javascript正则表达式,返回连字符和空格后面的数字
- jQuery只允许使用数字、字母和连字符
- e.减号连字符的哪个键代码已更改
- 在javascript中组合使用连字符连接的两个字符串
- 如何仅替换第一个数字(用连字符分隔)
- Webpack外部模块名称带连字符