在Firefox 85中使用top-level-await条件导入



我试图在一个脚本中做一个有条件的导入(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报告

相关内容

最新更新