Webpack bundle 和 TypeScript 产生错误的全局变量格式
Webpack bundle and TypeScript yields wrong global variable format
我正在使用带有 CommonJS 模块输出和 webpack 的 TypeScript 来创建浏览器捆绑包,使用 webpack 中的libraryTarget: 'var'
,以便我的库将作为全局变量 'Foo' 使用。但是,全局变量不是我默认的导出类,而是全局变量将是一个包装器,我必须调用new Foo.default()
才能实际实例化我的默认导出类。
下面是一个最小的 TypeScript 示例:
export default class Foo {}
编译后,这将是普通的JS结果:
var Foo = (function () {
function Foo() {
}
return Foo;
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = Foo;
相关的 webpack.config.js 部分:
output:
{
library: 'Foo',
libraryTarget: 'var'
}
现在,当将捆绑包包含在 <script>
标记中时,我可以从调试器中判断全局变量 Foo
是一个包装器,而 Foo
的构造函数实际上是一个属性default
,所以我需要调用:
var foo_instance = new Foo.default();
但我希望它是:
var foo_instance = new Foo();
我已经发现,如果我在 TS 编译输出中更改行exports.default = Foo
转换为module.exports = Foo
那么我可以像我期望的那样调用new Foo()
。
那么,我怎样才能以正确的方式使用 webpack,以便我的构造函数不会被包装在 default
属性中呢?
我希望你正在使用Babel。所以你的问题是 Babel 6 中的默认行为。它不再导出默认module.exports
。
请看下面的 Babel 插件:
https://www.npmjs.com/package/babel-plugin-add-module-exports
相关文章:
- 全局变量和全局对象的属性之间有什么区别吗
- delete关键字在全局变量上的不同行为
- 在javascript函数中设置全局变量
- 如何将getJson的响应保存在全局变量中
- 从Javascript方法返回全局变量
- AngularJS中的封装窗口全局变量
- javascript隐式全局变量
- 如何从onclick函数设置全局变量并将其传递给另一个JS文件
- 如何使全局变量仅特定于该文件
- 在page.open()-PhantomJS中无法访问全局变量
- CoffeeScript 在 'for v in values' 中创建一个全局变量 'v',导致事件中的错误引用
- Webpack bundle 和 TypeScript 产生错误的全局变量格式
- 带有全局变量的IE错误.如何绕过此错误
- JavaScript 在没有全局变量初始化值的情况下得到错误
- 隐含的全局变量不会被捕获为linter错误
- 为什么我的Javascript全局变量只更新一次?jQuery最后一个子选择器错误
- 使用全局变量时出现错误
- Javascript中的全局变量,返回错误的值
- 函数退出后全局变量的值错误
- Jquery 全局变量范围/错误值