Я новичок в ES6 (ECMAScript 6) и хотел бы использовать его модульную систему в браузере. Я прочитал, что ES6 поддерживается Firefox и Chrome, но я получаю следующую ошибку, используяexport
Uncaught SyntaxError: Unexpected token import
У меня есть файл test.html
<html>
<script src="test.js"></script>
<body>
</body>
</html>
и файл test.js
'use strict';
class Test {
static hello() {
console.log("hello world");
}
}
export Test;
Почему?
javascript
html
ecmascript-6
module
es6-modules
cdarwin
источник
источник
<script type="module"></script>
убедитесь, что вы добавили, что в противном случае вы получите эту ошибку. Я бился головой об стену, постоянно<script>import ... </script>
зная, что теперь говорят, что хром поддерживает модули ES6 без флагов, затем я заметил, что атрибут type был необходим, чтобы указать браузеру, что это модуль ES6, без которого вы получите именно такую информацию. ошибка.Ответы:
Многие современные браузеры теперь поддерживают модули ES6. Пока вы импортируете свои скрипты (включая точку входа в приложение),
<script type="module" src="...">
он будет работать.Посмотрите на caniuse.com для более подробной информации: https://caniuse.com/#feat=es6-module
источник
Вы можете попробовать модули ES6 в бета-версии Google Chrome (61) / Chrome Canary.
Эталонная реализация ToDo MVC от Пола Айриша - https://paulirish.github.io/es-modules-todomvc/
У меня есть базовая демонстрация -
//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>
Надеюсь, поможет!
источник
<script type="module"></script>
убедитесь, что вы добавили это, иначе вы получите эту ошибку. Я бился головой об стену, постоянно<script>import ... </script>
зная, что теперь говорят, что хром поддерживает модули ES6 без флагов, затем я заметил, что атрибут type был необходим, чтобы указать браузеру, что это модуль ES6.js
источника).К сожалению, в настоящий момент многие браузеры не поддерживают модули.
Найдено на MDN
источник
это сработало для меня, добавив
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>
См. Демонстрацию: https://codepen.io/abernier/pen/wExQaa
источник