繁体   English   中英

在浏览器中,未执行从ES6模块导入的JS代码

[英]In browser JS code that imports from ES6 module is not executed

我有一个ES6模块(mymodule)和HTML页面,该页面具有当用户打开页面时必须执行的JS代码。 这是我的模块:

//mymodule.js
class TestClass {

    getString() {
        return "TestString";
    }
}
export {TestClass}

这是我的页面:

//page.html
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Page</title>
        <script src="./mymodule.js" type="module"></script>
    </head>
    <body>
        <h1>Hello World!</h1>
        <script type="module">
            import {TestClass} from "./mymodule";
            let test = new TestClass();                 
            console.log("OUTPUT: " + test.getString());
        </script>
    </body>
</html>

Page.html和mymodule.js位于同一文件夹中,但是,当我在浏览器中打开page.html时,控制台上没有任何内容(无错误,无输出)-我使用FF 62.0.3。 如何解决?

  <script src="./mymodule.js" type="module"></script> 

以上是不需要的。 您可以删除它。

 import {TestClass} from "./mymodule"; 

浏览器不像Node.js那样执行文件扩展名解析。 (它们不能,因为它们处理URL而不是文件系统,因此无法获取目录中的文件列表)。

您需要使用以下网址明确显示:

import {TestClass} from "./mymodule.js";

注意:您还需要通过HTTP而不是从本地文件系统加载page.html

您可以将您的课程导出为默认关键字。

class TestClass {
    getString() {
        return "TestString";
    }
}
export default {TestClass}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM