我试图在一个脚本中做一个有条件的导入(ES6风格的Javascript),我通过Firefox 85中的HTML加载(或者更确切地说,我将不加载!)。
下面是脚本:(myscript.js
)
let ENVIRONMENT_IS_NODE = false;
let require;
if (ENVIRONMENT_IS_NODE) {
const {createRequire} = await import('module');
require = createRequire(import.meta.url);
}
这是我的HTML页面:(example.html
)
<!doctype html>
<html lang="en-us">
<head>
<meta charset="utf-8"/>
</head>
<body>
<script type="module" src="myscript.js"></script>
<!-- I also tried with async, but that did not change anything: -->
<!--script async type="module" src="myscript.js"></script-->
HELLO
</body>
</html>
此外,我知道Firefox中保护此功能的标志,因此我在about:config
中将javascript.options.experimental.top_level_await
设置为true
。
但是在加载页面时,我仍然在javascript控制台中得到以下错误:
Uncaught SyntaxError: top level await is not currently supported
对于信息,相同的页面在Chrome 88上加载良好,提供适当的标志设置也(#enable-javascript-harmony
)。
为什么它不能在Firefox 85上工作?我做错什么了吗?
在这里和这里,我得到了开发工作已经完成并随版本85发布的确认,并且应该启用该标志。
编辑:我刚填了一份bug报告。让我们看看开发人员怎么说。
我在Bugzilla上得到了一个答案:这个功能实际上还在开发中,这个标志在公开发布中是不活跃的。
该标志目前仅在夜间构建中启用,官方文档(在我写这篇文章的时候是误导的)将被修复以澄清这一点。
查看bug报告