Javascript Web包包和TypeScript生成错误的全局变量格式
我使用带有CommonJS模块输出和webpack的TypeScript创建浏览器捆绑包,在webpack中使用Javascript Web包包和TypeScript生成错误的全局变量格式,javascript,module,typescript,webpack,Javascript,Module,Typescript,Webpack,我使用带有CommonJS模块输出和webpack的TypeScript创建浏览器捆绑包,在webpack中使用libraryTarget:'var'以便我的库可用作全局变量“Foo”。但是,全局变量不是我的默认导出类,而是一个包装器,我必须调用new Foo.default()来实际实例化我的默认导出类 下面是一个最小的TypeScript示例: export default class Foo {} 编译后,这将是简单的JS结果: var Foo = (function () {
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'
}
现在,当将bundle包含在
标记中时,我可以从调试器中看出全局变量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。
所以你的问题是巴别塔6中的默认行为。它不再导出默认的模块。再导出
请查看以下Babel插件:
投反对票,因为问题标题明确指出我使用的是TypeScript,而不是Babel。