首页 > 解决方案 > 动态模块加载在 Firefox 上不起作用 - 语法错误:未实现动态模块导入

问题描述

我尝试在 Firefox(OS X 10.14.3 上的版本 66.0.2(64 位))上动态加载模块但没有成功。

我收到以下错误:

SyntaxError:未实现动态模块导入

它在谷歌浏览器上运行良好。

index.html

<!DOCTYPE html>
<html lang="en">
    <head>
        <title>Dynamic module test</title>
        <meta charset="utf-8">
    </head>
    <body>
        <p>Test</p>
        <script async="" type="module" src="module.js"></script>
        <script type="module" src="main.js" ></script>
    </body>
</html>

main.js

let main = ()=> {

    import('./module.js').then((loadedModule) => {

            console.log('module loaded')

            if(loadedModule.activate) {
                loadedModule.activate()
            }

        })
        .catch((error) => {
            console.log(error)
        });
}

document.addEventListener("DOMContentLoaded", main)

module.js

export function activate() {
    console.log('activate module')
}

我制作了一个示例项目,您可以下载导出到 .zip(文件 > 导出到 ZIP)。

由于到目前为止我还没有答案,我在 bugzilla 上做了一个错误报告

标签: javascriptfirefoxdynamicmodule

解决方案


在 Firefox 中,您可以更改about:config中的首选项以加载动态模块:

  javascript.options.dynamicImport

如评论中所述,FF 67+ 应该解决这个问题。如果您使用 Firefox 开发者版,它也无需任何更改即可工作。


推荐阅读