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

帕维尔_K

我有一个 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 而不是文件系统,因此无法获取目录中的文件列表)。

您需要明确使用 URL:

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

每次导入时执行的ES6模块代码

导入ES6模块是否在导入文件中执行代码?

了解ES6模块的代码执行

ES6模块在节点js中不起作用“支持目录导入的解析ES模块”

使导入的代码仅在特定页面中运行[模块模式+ ES6]

在浏览器中的 es6 模块中无法识别从 node_modules 导入

浏览器中的ES6模块:Uncaught SyntaxError:意外的令牌导入

通过Node.js中的ES6模块进行内联导入

浏览器中的ES6模块

如何导入香草JS ES6模块打字稿?

Node.js无法导入ES6模块

在ES6中的{}内包装整个JS代码块

在浏览器中使用带有es6样式类和导入的es6样式类的TypeScript转译代码,而无需执行额外的转译步骤?

带有ES6模块导入的ServiceWorker(谷歌浏览器)

在Typescript编译过程中在相对导入语句上附加.js扩展名(ES6模块)

使用导入而不是要求在ES6中添加模块

从Typescript中的http url导入ES6模块

ES6类功能中的导入模块

node.js中的ES6变量导入名称?

将Javascript库作为具有不同浏览器和Node.js实现的ES6模块发出

ES6导入的代码严格吗?

通过导入ES6模块来加载和使用旧版JS模块(例如IIFE)

如何在ES6中导入“旧的” ES5代码

浏览器中的ES6模块加载器将忽略cookie

如何动态执行/评估包含ES6模块的JavaScript代码/需要某些依赖项?

仅当模块直接执行时才运行 ES6 代码

将ace代码编辑器导入Webpack,ES6,TypeScript项目

JavaScript-如何使ES6导入在浏览器中工作?

在浏览器中反应组件未定义-ES6导入/导出