Javascript ES6模块不工作

Javascript ES6模块不工作,javascript,node.js,import,module,ecmascript-6,Javascript,Node.js,Import,Module,Ecmascript 6,我想不出来。我有一个包含一个javascript文件的index.html小应用程序设置。与该文件位于同一目录中的另一个文件名为myJsModule.js,代码如下: export default class{ doStuff() { console.log("calling goStuff() from external Module"); } } 然后,从html加载的主javascript文件以以下方式进行导入: import myJsModul

我想不出来。我有一个包含一个javascript文件的index.html小应用程序设置。与该文件位于同一目录中的另一个文件名为myJsModule.js,代码如下:

export default class{

    doStuff()
    {
        console.log("calling goStuff() from external Module");
    }
}
然后,从html加载的主javascript文件以以下方式进行导入:

import myJsModule from "myJsModule";
// TESTING MODULES
let myNewModule = new myJsModule();
myNewModule.doStuff();
我有一个本地web服务器正在使用Node运行,因此我正在通过我的本地主机访问index.hmtl:

我得到了以下错误:uncaughtsyntaxerror:意外的标识符(指我的主js文件上的myJsModule)。我还尝试使用babel将其转换为以前的javascript。我在使用“require”时也遇到了同样的问题


我的本地服务器不应该解决这个问题吗?还是我用错了?

从Chrome 61开始,模块都是。我能够让您的示例使用以下HTML和JavaScript

index.html:

<!DOCTYPE html>
<html>
<head>
    <title>Native Module</title>
</head>
<body>
    <p>Hello, world!</p>
    <script type="module">
        import MyJsModule from './MyJsModule.js';
        let myJsModule = new MyJsModule();
        myJsModule.doStuff();
    </script>
</body>
</html>

AFAIK no浏览器本机支持ES6模块或ES6模块语法。因此,除了使用Babel编译外,您还需要使用模块绑定器,如Webpack或Rollup@djfdev我认为他使用的不是浏览器,这只是JavaScript历史和实现中不幸的一部分。节点有自己的模块系统,所以您可以在本地使用
require
来导入CommonJS风格的模块。ES6指定了一种新的导入/导出语法,但浏览器在使用这两种语法实现模块时都很慢(我认为Safari可能是个例外)。因此,同时,最好将您的浏览器代码与Webpack或其他软件捆绑在一起。模块真的很好用,所以额外的构建步骤非常值得。看起来这方面的进展比我想象的要快,你可以从5月份开始阅读。但是考虑到支持仍然非常有限,我认为我们还需要很长时间才能安全地使用浏览器中的模块,而不使用捆绑程序。除了ES6模块在您的环境中似乎不受支持之外,此代码无论如何都不起作用。您可以导出一个类,但在导入之后,您会尝试将其作为实例使用。相反,只需
导出函数doStuff(){…}
,然后
从“myJsModule”导入*为myJsModule
并调用
myJsModule.doStuff()。你确定他的?我在Windows上使用的是Chrome 62版,但它仍然无法识别“导入”。您是否必须在应用程序中启用任何内容chrome://flags/ 你说得对。我在html中的脚本标记中缺少type=“module”属性。我不知道我需要这个。我现在有模块在chrome中工作。非常感谢。另请注意-必须有“内容类型”响应头才能使模块正常工作。
export default class MyJsModule {

    doStuff() {
        console.log("calling doStuff() from external Module");
    }

}