ES6 в браузере: Uncaught SyntaxError: Неожиданный импорт маркера
Я новичок в 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;
Почему?
Ответы
Ответ 1
Многие современные браузеры теперь поддерживают модули ES6. Пока вы импортируете свои скрипты (включая точку входа в ваше приложение), используя <script type="module" src="...">
, это будет работать.
Посмотрите на caniuse.com для более подробной информации:https://caniuse.com/#feat=es6-module
Ответ 2
Вы можете попробовать модули ES6 в Google Chrome Beta (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>
Надеюсь, это поможет!
Ответ 3
К сожалению, модули не поддерживаются многими браузерами прямо сейчас.
В настоящее время эта функция только начинает реализовываться в браузерах. Он реализован во многих транспилерах, таких как TypeScript и Babel, а также в таких пакетах, как Rollup и Webpack.
Найдено на MDN
Ответ 4
он работал для меня, добавляя type="module"
к скрипту, import
my 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