windows/global 对象库不适用于 webpack5
windows/global object library don't work with webpack5
我编写了将 Class 添加到全局 window 对象的库:
const Maplat = window.Maplat = {};
Maplat.createObject = blah blah..
通过 webpack4 编译,效果很好。
<html>
<head>
<script src="./assets/maplat_core.js"></script>
</head>
<body>
<script>
Maplat.createObject(...);
// Works fine
</script>
</body>
</html>
但是我更新了 webpack 5 之后,这个就不行了
我查看了编译结果代码,编译为:
...
, Tv = window.Maplat = {};
Tv.createObject = function(t) {
return new Promise((function(e) {
var n = new Rv(t);
n.waitReady.then((function() {
e(n)
}
))
}
))
}
}
)()
}
)();
有了这个编译结果,
const Maplat = window.Maplat = {};
在
之后工作
Maplat.createObject(...);
所以这个编译结果不成立
如何解决?
如何通过 webpack5 添加 class 到 window/global 对象?
最后它可以使用这个 webpack 设置:
output: {
path: path.resolve(__dirname, "../dev"),
filename: '[name].js',
libraryTarget: 'umd',
globalObject: 'this',
},
我编写了将 Class 添加到全局 window 对象的库:
const Maplat = window.Maplat = {};
Maplat.createObject = blah blah..
通过 webpack4 编译,效果很好。
<html>
<head>
<script src="./assets/maplat_core.js"></script>
</head>
<body>
<script>
Maplat.createObject(...);
// Works fine
</script>
</body>
</html>
但是我更新了 webpack 5 之后,这个就不行了
我查看了编译结果代码,编译为:
...
, Tv = window.Maplat = {};
Tv.createObject = function(t) {
return new Promise((function(e) {
var n = new Rv(t);
n.waitReady.then((function() {
e(n)
}
))
}
))
}
}
)()
}
)();
有了这个编译结果,
const Maplat = window.Maplat = {};
在
之后工作Maplat.createObject(...);
所以这个编译结果不成立
如何解决? 如何通过 webpack5 添加 class 到 window/global 对象?
最后它可以使用这个 webpack 设置:
output: {
path: path.resolve(__dirname, "../dev"),
filename: '[name].js',
libraryTarget: 'umd',
globalObject: 'this',
},