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

cda*_*win 74 html javascript module ecmascript-6 es6-modules

我是ES6的新手(ECMAScript 6),我想在浏览器中使用它的模块系统.我读过ES6受Firefox和Chrome支持,但我收到以下错误export

Uncaught SyntaxError: Unexpected token import

我有一个test.html文件

<html>
    <script src="test.js"></script>
<body>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

和一个test.js文件

'use strict';

class Test {

    static hello() {
        console.log("hello world");
    } 
}

export Test;    
Run Code Online (Sandbox Code Playgroud)

为什么?

小智 52

您可以在Google Chrome测试版(61)/ Chrome Canary中试用ES6模块.

保罗爱尔兰参与实施ToDo MVC - https://paulirish.github.io/es-modules-todomvc/

我有基本的演示 -

//app.js
import {sum} from './calc.js'

console.log(sum(2,3));
Run Code Online (Sandbox Code Playgroud)
//calc.js
let sum = (a,b) => { return a + b; }

export {sum};
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你!

  • 这是正确的......我注意到的重要部分是````script type ="module"> </ script>```确保你添加,否则你会得到那个错误.我敲我的头挂在墙上不断做```<SCRIPT>进口... </ SCRIPT>```明知是铬现在说支持ES6模块没有标志,然后我注意到type属性是需要的指定浏览器这是一个ES6模块. (32认同)
  • 我通过上面的代码片段运行上面的错误,使用chrome v67,为什么? (4认同)

vul*_*tyy 52

此帖中之前接受的答案现已过时.许多现代浏览器现在支持ES6模块.只要您使用<script type="module" src="...">它导入脚本(包括应用程序的入口点)就行了.

请访问caniuse.com了解更多详情:https: //caniuse.com/#feat = es6-module

  • 你让我开心。干杯;) (2认同)

t3h*_*mas 25

不幸的是,目前许多浏览器都不支持这些模块.

此功能刚刚开始在本地浏览器中实现.它在许多转换器(如TypeScript和Babel)以及捆绑器(如Rollup和Webpack)中实现.

MDN上找到

  • 您必须在脚本标记中添加type ="module". (4认同)

abe*_*ier 9

它适用于我添加type="module"import我的mjs 的脚本:

<script type="module">
import * as module from 'https://rawgit.com/abernier/7ce9df53ac9ec00419634ca3f9e3f772/raw/eec68248454e1343e111f464e666afd722a65fe2/mymod.mjs'

console.log(module.default()) // Prints: Hi from the default export!
</script>
Run Code Online (Sandbox Code Playgroud)

请参阅演示:https://codepen.io/abernier/pen/wExQaa