Sou novo no ES6 (ECMAScript 6) e gostaria de usar seu sistema de módulos no navegador. Eu li que ES6 é compatível com Firefox e Chrome, mas estou recebendo o seguinte erro ao usarexport
Uncaught SyntaxError: Unexpected token import
Eu tenho um arquivo test.html
<html>
<script src="test.js"></script>
<body>
</body>
</html>
e um arquivo test.js
'use strict';
class Test {
static hello() {
console.log("hello world");
}
}
export Test;
Por quê?
javascript
html
ecmascript-6
module
es6-modules
cdarwin
fonte
fonte
<script type="module"></script>
que você acrescenta que, do contrário, você obterá esse erro. Eu estava batendo minha cabeça na parede continuamente fazendo com<script>import ... </script>
conhecimento de causa que agora se diz que o Chrome suporta módulos ES6 sem sinalizadores, então percebi que o atributo type foi necessário para especificar para o navegador que este é um módulo ES6, sem o qual você obtém exatamente erro.Respostas:
Muitos navegadores modernos agora oferecem suporte a módulos ES6. Contanto que você importe seus scripts (incluindo o ponto de entrada para seu aplicativo),
<script type="module" src="...">
ele funcionará.Dê uma olhada em caniuse.com para mais detalhes: https://caniuse.com/#feat=es6-module
fonte
Você pode experimentar os Módulos ES6 no Google Chrome Beta (61) / Chrome Canary.
Implementação de referência de ToDo MVC por Paul Irish - https://paulirish.github.io/es-modules-todomvc/
Tenho uma demonstração básica -
//app.js import {sum} from './calc.js' console.log(sum(2,3));
//calc.js let sum = (a,b) => { return a + b; } export {sum};
<html> <head> <meta charset="utf-8" /> </head> <body> <h1>ES6</h1> <script src="app.js" type="module"></script> </body> </html>
Espero que ajude!
fonte
<script type="module"></script>
que você acrescenta que, do contrário, obterá aquele erro. Eu estava batendo minha cabeça na parede continuamente,<script>import ... </script>
sabendo que agora se diz que o Chrome suporta módulos ES6 sem sinalizadores, então percebi que o atributo type era necessário para especificar para o navegador que se tratava de um módulo ES6.js
fonte).Infelizmente, muitos navegadores não têm suporte para módulos no momento.
Encontrado em MDN
fonte
funcionou para mim adicionar
type="module"
ao scriptimport
meus 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>
Veja a demonstração: https://codepen.io/abernier/pen/wExQaa
fonte