javascript - 使用 topLevelAwait 时如何将 Webpack 附加到窗口或作为全局
问题描述
这里有一些关于如何向浏览器公开 Webpack 模块的现有但过时的问题,以便输出可以包含在script
标签中并从全局引用window
或作为全局引用。我已经尝试了所有这些,但正如我们所知,跟上 Webpack 的步伐是西西弗斯式的练习,而且似乎output
争论正在转向提供output.library
对象。
现在,window
当我将输出包含在script
标签中时,我的模块已成功实现,但是——我怀疑因为它涉及加载外部数据的异步函数——它作为 Promise 加载。但是我不清楚如何在后续<script>
标签中处理它,因为 Webpack 使用regenerator-runtime
.
以下是我的配置的相关部分:
output: {
path: path.resolve(__dirname, "../dist"),
filename: "myApp.js",
library: {
library: "myApp",
target: "var",
export: "default"
},
experiments: {
topLevelAwait: true
},
},
module: {
rules: [
{
test: /\.(js|jsx)$/i,
exclude: /(node_modules|bower_components)/i,
use: {
loader: 'babel-loader',
options: {
presets: [
[
require.resolve('@babel/preset-env'), {
corejs: 3,
debug: false,
targets: {
browsers: [ 'IE 11', ],
},
useBuiltIns: 'usage'
}
]
]
}
}
},
// [[ CSS LOADERS, etc ]]
]
}
我已经尝试过为该output.library
对象大惊小怪地使用很多不同的参数,但我认为问题在于异步函数在浏览器中作为 Promise 加载:
<script type="text/javascript" src="dist/myApp.js"></script>
<script>
// let test = await myApp("#myAppContainer");
let test = myApp("#myAppContainer");
</script>
当我尝试第一次使用时await
(暂时不考虑与旧浏览器的兼容性),我在控制台中被告知“等待仅在异步函数和模块的顶层主体中有效。”
我不确定这是否应该在 Webpack 配置或页面尝试使用暴露功能的方式中解决。任何帮助深表感谢!
解决方案
推荐阅读
- python - Python中有没有办法(甚至是要求)来表示抽象的中间类?
- r - ts 对象不适用于 R 中的日常数据 - 真的很困惑
- javascript - 如何拥有类型安全的“省略”实用程序功能?
- docker - POD 的回应线索
- python - 翻转二进制字符串python3
- python - 从 .txt 将代理添加到 python 中的字典
- sql - Postgres键值表,选择值作为列
- python - 如何重定向到 Django 中的相同/当前页面?
- python - 如何在 concurrent.futures 的迭代器中确保每个 Future 的超时?
- python - 将球体参数方程乘以 NumPy,Python 中的矩阵